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


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


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


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


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.