Shell script: Implementando um simples manipulador de eventos de teclado

Mais um script da série “Tô a toa!” que resolvi postar aqui no blog!

Muitas vezes um usuário quer que determinada ação ocorra em seu script ao se pressionar uma única tecla, mas no shell não há nenhum tipo de manipulador que faça esse serviço. O mais próximo seria utilizando o built-in trap para capturar sinais de interrupção tais como: Ctrl+C, Ctrl+D, etc… Porém para o propósito acima ele não se adequa muito bem. Para resolver essa “treta” 😎 você pode utilizar (adaptando é claro!) este simples shell script.

#!/bin/sh
#
# Implementacao simples dum "Manipulador de eventos de teclado" em shell script.
# Autor: Sandro Marcell (smarcell)
# <smarcell@myopera.com> | <http://www.myopera.com/smarcell/blog>
#
PATH="/bin:/usr/bin:/usr/local/bin"

# Define a tecla que controlara a parada do evento
tecla_controle="s"
# Boas praticas de programacao =)
# - Sempre defina as variaveis antes de utiliza-las
tecla_pressionada=""

# Poe o terminal em modo especial de interpretacao de caracteres
stty -echo -icanon min 0

# O evento ocorrera dentro deste loop
while true
do
	[ "$tecla_pressionada" = "$tecla_controle" ] && break
	# Seus codigos aqui!
	echo "Pressione a tecla '$tecla_controle' para sair do loop." ; sleep 1s
	read tecla_pressionada	
done

# Restaura o modo padrao do terminal
stty sane

echo ">> Voce pressionou a tecla '$tecla_controle' e finalizou o loop!"

exit 0

Eh isso aí. :up:

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s