Programando em shell script (conceitos básicos)
Estou montando este artigo para ajudar as pessoas que tem interesse em começar a programar em shell script. Não achei nenhuma uma introdução rápida e de fácil entendimento aqui no VOL.
Parte 3: Mão na massa!
Todo o programa deve começar com um interpretador de script. O programa inicia da seguinte maneira:
#!/bin/bash
Ou:
#!/bin/sh
OBS: O programa sempre começa com os caracteres '#!' na frente.
Vamos ver um exemplo então:
# nano bomdia.sh
Dentro do nano:
#!/bin/bash
clear
echo "Olá $USER"
clear
echo "Olá $USER"
Salve o programa e execute-o:
# sh bom.sh
Algumas condicionais possíveis:
| = | Igual |
| -eq | Igual |
| != | Diferente |
| -gt | Maior |
| -lt | Menor |
| -o | Ou |
| -d | Se o arquivo for diretório |
| -e | Se existir o arquivo |
| -z | Se o arquivo estiver vazio |
| -f | Se o arquivo conter algum texto |
| -o | Se o usuário for o dono do arquivo |
| -r | Se o arquivo pode ser lido |
| -w | Se o arquivo pode ser alterado |
| -x | Se o arquivo pode ser executado |
Se Senão
O 'se' 'senão' do bash é parecido com o das outras linguagens de programação:if=se
fi=fim se
else=senão
Porém o "if" no shell script não faz um teste com uma condição e sim com um comando. O atalho para o teste pode ser utilizado com o símbolo [ ], veja o exemplo:
if [ $? = 0 ]; then
echo 'Olá'
else
echo 'Alô'
fi
echo 'Olá'
else
echo 'Alô'
fi
OBS: Observe que deve haver espaços entre o comando e as chaves.
Condicional case
O "case" também serve para o controle de fluxo, mas permite que uma série de valores e expressões regulares seja testada e os comandos executados. A sintaxe:case variável in
expressão1) comando1 ; comando2 ; ;
expressão2) comando3 ; comando4 ; ;
*) comando5 ; ;
esac
OBS: O "*)" é um padrão do case, se a variável testada não for igual a nenhuma das expressões 1 e 2, ele vai executar o comando5.
O loop for
A sintaxe do "for" é um pouco complicada de se entender, por isso aconselho fazer esses dois exemplos para poder distinguir.Crie um arquivo txt, vamos escrever algo nele:
$ ls -1 > lista.txt
$ for i in 'cat lista.txt' ; do cp $i.backup; mv $i.backup /usr/backup; done;
A $i é atribuída para cada linha do arquivo.
Outro exemplo:
for numero in um dois tres quatro cinco
do
echo "Contando: $numero"
done
do
echo "Contando: $numero"
done
O while
É usada como nas outras linguagens, enquanto verdadeiro ou falso continua a executar a condição (no nosso caso o comando). Ex.:
variavel='valor'
while [ $variavel = "valor" ]; do
comando1
comando2
done
while [ $variavel = "valor" ]; do
comando1
comando2
done
veja um exemplo de uma grande programação shell:
# cat /etc/profile
E fim.
Mas ta valendo a iniciativa