eldermarco
(usa Fedora)
Enviado em 24/11/2012 - 19:40h
Há muitas coisas que você pode mudar nesse script. A começar por tentar achar a variável através do comando ENV. Você pode simplesmente testar se ela existe com um if:
# Verifica se uma dada variável não está vazia. Se ela não existe, estará.
if [ -n "$VAR" ]; then
echo "A variável dada existe"
else
echo "A variável dada não existe"
fi
Mas daí fica uma pergunta: Como transformar uma string dada no nome de uma variável? Para pensar... =)
Depois do
if [ ... ] você deve colocar um ';' se for deixar o
then na mesma linha:
# Note o ';' depois do if [ ... ]
if [ $# -gt 2 ]; then
echo "mais de dois argumentos dados."
fi
Mas se não for na mesma linha, sem problemas. Você pode omitir:
# Aqui não precisamos do ';', já que o then está na linha seguinte
if [ $# -gt 2 ]
then
echo "mais de dois argumentos dados."
fi
E por último, você deve entender que o [ ... ] é um comando test disfarçado. Ou seja, fazer isso
# Aqui não precisamos do ';', já que o then está na linha seguinte
if [ $# -gt 2 ]; then
echo "mais de dois argumentos dados."
fi
ou isso
# Aqui não precisamos do ';', já que o then está na linha seguinte
if test $# -gt 2; then
echo "mais de dois argumentos dados."
fi
É a mesma coisa.
O if permite testar se comandos foram bem sucedidos ou não, através do seu código de retorno. Por exemplo, um comando no terminal que é bem sucedido em sua execução sempre retorna 0 (zero). Se retornar um outro número, é porque houve algum problema. O if testa esses retornos (a variável $? guarda o valor de retorno do último comando executado, como você usou ela no seu script). O comando test, por sua vez, permite testar condições e retornar um dado valor, dependendo se a expressão for verdadeira ou falsa. Se verdadeira, ele retorna zero (comando bem sucedido). Caso contrário, retorna algum outro valor diferente de zero (1, por exemplo).