Comando IF - Testa se variável existe [RESOLVIDO]

1. Comando IF - Testa se variável existe [RESOLVIDO]

Francisco Godoy Pereira
chicogodoy.evo

(usa CentOS)

Enviado em 14/12/2011 - 12:57h

Pessoal, tenho um probleminha no meu script que envolve o IF.

Segui todos os tutoriais encontrados e mesmo assim ele não funciona, deve ser algo implícito que não foi exposto nos artigos. Se puderem me ajudar, agradeço.

Segue abaixo o script.

if [ "$1" = "--help" ]; then

echo
"
Usage: comando [arg1] [arg2]

"
elif [ -n $1 ]; then
echo "A primeira variavel existe!"

else

echo "Caiu no ELSE"

fi


Traduzindo para o portugol:

Se eu digitar "comando --help" ele me mostra a mensagem de Help.
Se eu digitar um primeiro argumento diferente de --help "comando arg1" ele exibe "A primeira variavel existe".
Caso qualquer outra coisa ele exibe "Caiu no ELSE".

O que acontece é o seguinte, mesmo não passando qualquer argumento ele cai na segunda opção.

Alguma luz?


  


2. MELHOR RESPOSTA

Eduardo Treska
eduardotreska

(usa Ubuntu)

Enviado em 14/12/2011 - 13:33h

Cara, veja eu eu entendi direito:

Se voce digitar:
./nome --help
Ele deve cair no primeiro caso, certo?

Se voce digitar qualquer outra coisa diferente de --help, mas não pode ser um espaço vazio, ele deveria cair no segundo caso?

Se for vazio ele cai no terceiro?

Se for isso, eu testei aqui da seguinte forma:

if [ "$1" = "--help" ]; then

echo
"
Usage: comando [arg1] [arg2]

"
elif [ "$1" != '' ]; then
echo "A primeira variavel existe!"

else

echo "Caiu no ELSE"

fi

Se não for isso, vou ver sua resposta e tentar outra coisa
:D

3. Problema resolvido!

Francisco Godoy Pereira
chicogodoy.evo

(usa CentOS)

Enviado em 14/12/2011 - 15:21h

Eduardo Treska, o código ficou perfeito e você entendeu perfeitamente e minha necessidade, só um detalhe, executando esse código quando eu caio na condição do "--help" eu recebo um erro, que é o seguinte:

[[email protected] folder]# ./teste --help

./teste: line 7:
Usage: comando [arg1] [arg2]

: command not found

Mas já resolvi. Deve-se pegar as linhas:

###
echo
"
Usage: comando [arg1] [arg2]

"
###

e transformá-las em:

###
echo "Usage: comando [arg1] [arg2]"
###

Acho que é só questão de sintaxe mesmo.

O código em perfeito funcionamento fica da seguinte forma:

if [ "$1" = "--help" ]; then

echo "Usage: comando [arg1] [arg2]"

elif [ "$1" != '' ]; then

echo "A primeira variavel existe!"

else

echo "Caiu no ELSE"

fi

A partir dai é lapidar o código. Pretendo instituir uma segunda comparação da seguinte forma:

(...)
elif [ "$1" != '' ] && [ "$2" != '' ]; then
(...)

Acredito que dessa forma acima já funcione, mas ainda não testei.

Valeu! Meu problema foi resolvido! Muito obrigado pela atenção!




4. Re: Comando IF - Testa se variável existe [RESOLVIDO]

Eduardo Treska
eduardotreska

(usa Ubuntu)

Enviado em 14/12/2011 - 15:41h

É isso ai, o importante é que funcionou.

Você sacou o que fiz ali né mudando o -n para diferente de ''

Qualquer coisa estamos por aqui.


5. Re: Comando IF - Testa se variável existe [RESOLVIDO]

Francisco Godoy Pereira
chicogodoy.evo

(usa CentOS)

Enviado em 14/12/2011 - 16:02h

Sim, em PHP funciona desta forma, porém pesquisei em Shell Script Linux e encontrei alguns artigos mencionando a mesma coisa e com exemplos práticos, mas quando testo não funciona.

Exemplo 1:
elif [ -n "$1" ]; then

Exemplo 2:
elif [ -s "$1" ]; then

-s = Verifica se é nulo
-n = Verificar se é não nulo

Testei com os dois e recebo o mesmo resultado. Achei bem estranho não funcionar, pois existem referências boas para estes exemplos.

Mas dessa que você explicou funcionou, meu script está quase completo, agora falta 99%. haha..

Valeu a dica!


6. Re: Comando IF - Testa se variável existe [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/12/2011 - 16:45h



VARIAVEL=$1
if [ -n ${VARIAVEL} ]
echo 'nulo'
fi

if [ ! -n ${VARIAVEL} ]
echo 'não nulo'
fi





Dica:
Me pareceu que nesta solução foi utilizado um range n de opções certo? Caso sim acho que o mais indicado seria a utilização do bloco case esac com procedimentos/funções e para evitar redundâncias indico o uso de getopts.

Pesquise mais e boa sorte!


7. Re: Comando IF - Testa se variável existe [RESOLVIDO]

Francisco Godoy Pereira
chicogodoy.evo

(usa CentOS)

Enviado em 23/12/2011 - 11:59h

Obrigado pela dica Ronin, vou pesquisar a respeito.

Testei esse script que você passou, mas ele não funcionou, você pode por favor explicar o funcionamento?

Obrigado.


8. Re: Comando IF - Testa se variável existe [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/12/2011 - 03:02h

Pois é... Tá todo errado... Maldita racionamento elétrico. :D
Desculpe!

Segue um que funciona divinamente bem.



#!/bin/bash

VARIAVEL=$1

# Verifica se o comprimento da
# variável não é igual a zero
if [ ${#VARIAVEL} -ne 0 ]
then
echo 'não nulo'
else
echo 'nulo'
fi



Boa sorte!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts