Informagica Fotos Fotos Audio Video Eu




sim sou anti social arkhan nemesis




Controle de Fluxo no Shell-Script

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


Caso encontre algum erro no texto acima, por favor me informe para que sejam tomadas as providências ...

www.rrussel.org - colabore com o mundo livre

Informações Extraídas do Manual do Ksh

Hewlett-Packard Company - 3 - HP-UX Release 11.00: October 1997





sim sou anti social arkhan nemesis


"Open Source. Milhoes de mentes abertas, nao podem estar enganadas!"










Site desenvolvido utilizando as ferramentas: