Programação em scripts de Shell

28 28America/Sao_Paulo dezembro 28America/Sao_Paulo 2017 Off Por Sidney silva santos

Uma das características que torna os scripts de shell tão poderosos é que sua implementação de construções de loop e execução condicional é semelhante à encontrada nos mais complexos scripts e linguagens de programação. Você pode utilizar vários tipos de loops diferentes, dependendo de suas necessidades.

As instruções “if…then” A construção de programação mais comumente usada é a execução condicional, ou a instrução if. Ela é usada para executar as seguintes ações apenas sob certas condições. Há diversas variações de if para testar vários tipos de condições.

O primeiro exemplo de if…then testa se VARIAVEL está configurada como o número 1. Se estiver, então o comando echo é usado para dizer que ela está configurada como 1. A instrução fi então indica que a instrução if está completa e que o processamento pode continuar.

VARIAVEL=1
if [ $VARIAVEL -eq 1 ] ; then
echo “A variável é 1”
fi

[caption id="attachment_1001" align="aligncenter" width="451"]Shell script estrutura if Exemplo de como testar uma variável.[/caption] [caption id="attachment_1003" align="aligncenter" width="451"]Shell script estrutura if Saída na tela[/caption]

Em vez de usar –eq, é possível usar o sinal de igualdade (=), como mostrado no exemplo a seguir. O = funciona melhor para a comparação de valores de string, enquanto –eq costuma ser melhor para a comparação de números. Usando a instrução else, palavras diferentes podem ser ecoadas se o critério da instrução if não for atendido ($STRING = “sexta-feira”). Tenha em mente que é uma boa prática colocar strings entre aspas e dar espaço entre elas senão gera um erro.

STRING=”Sexta-feira”
if [ $STRING = “sexta-feira” ] ;then
echo “Hoje é dia de tomar cerveja.”
else
echo “Hoje ainda é quinta-feira a cerveja vai ficar pra amanhã…”
fi

[caption id="attachment_1004" align="aligncenter" width="451"]Shell script teste de variavel Exemplo de como testar uma variável.[/caption] [caption id="attachment_1005" align="aligncenter" width="451"]Shell script teste de variável saída do código.[/caption]

Você também pode inverter os testes com um ponto de exclamação (!). No exemplo a seguir, se STRING não for segunda-feira, então “Hoje não é segunda-feira” é  impresso na tela.

STRING=”sexta-feira”
if [ “$STRING” != “segunda-feira” ] ; then
echo “Hoje não é segunda-feira”
fi

[caption id="attachment_1006" align="aligncenter" width="451"]Shell script teste de inversão Inverte o teste se for verdadeiro passa a ser falso ou vise-versa.[/caption] [caption id="attachment_1007" align="aligncenter" width="451"]Shell script teste de inversão Saída do codigo na tela.[/caption]

No exemplo a seguir, elif (que significa “else if”) é usado para testar uma condição adicional (por exemplo, se  é um arquivo ou um diretório).

echo ‘Digite um nome de arquivo ou diretório para consultar’
read nome
DiretoriArquivo=$nome
if [ -f $nome ] ; then
echo ‘Este é um arquivo’
elif [ -d $nome ] ; then
echo ‘Este é um diretório’
else
echo ‘Não sei o que é isso.’
fi

[caption id="attachment_1008" align="aligncenter" width="451"]Shell script estrutura elif else código para testar se é arquivo ou diretório usando a função read.[/caption] [caption id="attachment_1009" align="aligncenter" width="451"]Captura de tela de 2017-12-28 09-25-03 Saída do código na tela.[/caption]

Como você pode ver nos exemplos anteriores, a condição que você está testando é colocada entre colchetes [ ]. Quando uma expressão de teste é avaliada, ela retorna um valor de 0, o que significa que é verdade, ou um 1, o que significa que ela é falsa.

Observe que as linhas de echo são recuadas. O recuo é opcional e feito apenas para facilitar a leitura do script.

Anúncios