Simples interpretador de comandos feito em shellscript

Em determinados tipos de aplicativo shellscript, é necessário utilizar recursos como MENUs, PARÂMETROS, ou até mesmo interpretador de comandos interativo. Principalmente quando falamos de tarefas que não podem ser automatizadas, por exemplo: um monitoramento de replicação de banco de dados que eventualmente precisa da interação de um colaborador na função de “operador/monitor”.

Neste POST, apresenta-se como fazer um interpretador de comandos internos para um script:

Segue código de 26 linhas:

#!/bin/bash

interpreta(){
case $1 in
comando1) read -t 5 -p “voce escolheu a opcao comando 1”
;;
comando2) read -t 5 -p “voce escolheu a opcao comando 2”
;;
quit|exit) echo “Saindo..” && exit
;;
*) read -t 5 -p “usage: prompt> quit|exit|help|comando1|comando2”
;;
esac
}

trap continue 2 3
while true; do
clear
echo “INTERPRETADOR DE COMANDOS”
echo
SEND_COMMAND=””
read -t 30 -p “prompt> ” SEND_COMMAND
if [ “$SEND_COMMAND” != “” ]; then
interpreta $SEND_COMMAND
fi
done

A primeira parte do código trata-se da função INTERPRETA, que vai receber do while, o comando a ser interpretado. Se o comando for conhecido pelo CASE, a função age de acordo com os comandos conhecidor. Caso contrário, fornece a dica de utilização do interpretador interativo…

A segunda parte do código possui um laço while com trava de interrupção (trap) e mostra na tela um “prompt>” para que o usuário digite a opção desejada.

O usuário tem as seguintes opções:

* Digitar comando1 para executar alguma função programada no case comando1);

* Digitar comando2 para executar alguma função programada no case comando2);
* Digitar quit ou exit para sair do interpretador;
* Digitar qualquer coisa, inclusive help para receber a instrução de uso (usage) do interpretador;

Segue abaixo um “preview” de como fica o código em execução:

Acredita-se que este interpretador seja interessante para blindar o usuário com alguns comandos pré-estabelecidos pelo desenvolvedor do código, mas ao mesmo tempo deixar o sistema interativo. Isso pode auxiliar o operador a atender situações diferentes umas das outras, dependendo da análise de um terceiro corpo técnico.

Por: Hudson Murilo dos Santos

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *