test | |
| Uso: |
| test expr ou [ expr ] |
| Avalia a expressão expr e retorna 0 se verdadeiro e não zero se falso.
|
| -r file | Verdadeiro se o arquivo existe e aceita leitura. |
| -w file | Verdadeiro se o arquivo existe e aceita escrita. |
| -x file | Verdadeiro se o arquivo existe e é executavel. |
| -f file | Verdadeiro se o arquivo existe e é regular. |
| -s file | Verdadeiro se o arquivo existe e é maior que zero. |
| -d file | Verdadeiro se o arquivo existe e é um diretório. |
| -h file | Verdadeiro se o arquivo existe e é um link simbólico |
| -z s1 | Verdadeiro se o tamanho da string s1 for zero. |
| -n s1 | Verdadeiro se o tamanho da string s1 for NÃO zero. |
| s1 = s2 | Verdadeiro se as strings s1 e s2 forem identicas. |
| s1 != s2 | Verdadeiro se as strings s1 e s2 NÃO forem identicas. |
| s1 | Verdadeiro se s1 não for uma string nula. |
| n1 -eq n2 | Verdadeiro de os inteiros n1 e n2 forem algebricamente iguais. Algumas outras comparações -ne, -gt, -ge, -lt, e -le podem ser utilizadas no lugar de -eq. |
| Estes parametros podem ser combinados com ! NOT, -a AND, -o OR, ( expr ) grupo. |
| Exemplos: |
| Aguarda meuarquivo se tornar não legível:
|
| while test -r meuarquivo
do
sleep 30
done
echo '"meuarquivo" não é mais legível'
|
| Evite problemas em comparaçõe de string inserido aspas no inicio e no fim de cada operando, mas NÃO deve ser utilizado com comparações numéricas.. |
| Ex: test "X$response" = "Xexpected string" |
| Forma compacta de utilização do test: |
| comando1 && comando2 |
| Executa o primeiro comando e se este retornar 0 executa o segundo |
| comando1 || comando2 |
| Executa o primeiro comando e se este retornar não-zero executa o segundo |
| Ex: Cria um novo arquivo contendo a string default caso o arquivo não exista: |
|
[ ! -f arquivo ] && echo default > arquivo |
| Outros exemplos: |
| [ -d ~/tempdir ] || mkdir ~/tempdir |
| [ -d ~/tempdir ] && ls -ld ~/tempdir |
if-then-else
| |
| Uso: |
| if <expressão>;
then
comandos ...
comandos ...
else
comandos ...
comandos ...
fi
|
| Ex: Verifica a existência do arquivo e executa um comando |
| if [ -f /tmp/lock.txt ]; then
echo "Existe!"
else
echo "N.Existe!"
fi
|
| Solicita o Nome diretório ao usuário e tenta fazer o acesso. A variavel $? contém o retorno do código de erro do último comando. |
| echo "Informe o nome do diretorio: \c"
read DIR
if ( cd $DIR 2>/dev/null ); then
echo "'cd $DIR' retornou \"sucesso\" ($?)"
else
echo "'cd $DIR' retornou \"insucesso\" ($?)"
fi
|
case | |
| Uso: |
| case Padrão in
Amostra1 | Amostra2)
Comandos;;
Amastra3)
Comandos;;
N)
Comandos;;
*)
Comandos;;
esac
|
| O pipe pode ser utilizado como "ou", o * trata as excessões (tudo o que não foi tratado nas condições anteriores). |
| Caracteres coringa são aceitos (*,?,etc) |
| Exemplo simples de utilização. Verifica qual o acesso do usuário e monta o menu correspondente. O duplo ponto-e-virgula deve ser usado apenas na ultima instrução da condição. |
| case $Acesso in
Completo|Gerencia) MontaMenuCompleto;;
Administrador) MontaMenuAdministrador;;
Usuario) MontaMenuUsuario;;
N) MontaN;;
*) MensagemErro;;
esac
|