shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] testar se parametro $1 foi passado


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] testar se parametro $1 foi passado
Date: Tue, 18 Mar 2008 10:14:06 -0300

Nesse caso vc pode definir que, quando nada é passado para o script,
uma ação default sera executada,

Eu faria:

- uma mensagem de erro enviada para a saida de erro ( redirecionamento >&2 )
- uma mensagem de help (geralmente um resumo das opções do script)
- sair do script com exit + algum valor diferente de 0 -- caso vc faça
alguma coisa com o $? do script

ex:

./script || ./algum_outro_script_em_caso_de_erro

2008/3/18 Édnei Rodrigues <address@hidden>:
>
>
> Complementando:
>
>  if [ $# = 0 ]; then echo "error - parametro não passado" ; fi
>
>  Em 17/03/08, Tiago Barcellos Peczenyj <address@hidden> escreveu:
>
>  >
>  > Vc poderia testar se o valor da variavel $# é igual a 0.
>  >
>  > $# é a quantidade de parâmetros passados para o script ou função
>  >
>  > ex:
>  >
>  > $ cat ./test.sh
>  > echo $#
>  >
>  > $ ./test.sh 1 2 3
>  > 3
>  >
>  > $ ./test.sh
>  > 0
>  >
>  > 2008/3/17 Adelson O. Junior <address@hidden <jroliv%40gmail.com>>:
>
>
>  >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > Pessoal,
>  > > Obrigado pela contribuição da mensagem anterior.
>  > >
>  > > Minha dúvida agora é essa: como testo se um parametro ($1) foi
> realmente
>  > > passado para um script na linha de comando?
>  > > Tenho o script montado, rodando. Ele funciona corretamente com os
>  > > parametros
>  > > -s -f -t, agora se nao passo parametro ele fica em loop. Queria testar
>  > se
>  > > foi passado algum parametro, se não foi imprimir um erro..
>  > >
>  > > Um trecho:
>  > >
>  > > while getopts " ht:f:s:V" OPT; do
>  > > case $OPT in
>  > > "h") echo -e "usage:
>  > > -t <to> Input the caller username/DID\n
>  > > -f <from> Input the callee username/DID\n
>  > > -s <server.log> Input the serverlog file\n
>  > > example:
>  > > ./catchcalls -t ajunior -f rzedan -s server.log.2008-03-17-03
>  > > PS: server.log.* must to be ungziped before. \n" && exit 1;;
>  > > "t") TO=$OPTARG;;
>  > > "f") FROM=$OPTARG;;
>  > > "s") ARQ=$OPTARG;;
>  > > "V") echo -e "getcall.sh script is a part of Support Toolkit version
>  > > 0.1 Beta\n" && exit 1;;
>  > > *) echo -e "Invalid option \n usage: ./catchcall -s <server.log> -t
>  > > <to> -f <from>\n" && exit 1;;
>  > > esac
>  > > done
>  > >
>  > > Obrigado.
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  >
>  > --
>
>  > Tiago B Peczenyj
>  > Linux User #405772
>  >
>  > http://peczenyj.blogspot.com/
>  > "what does not kill us makes us stronger"
>  >
>  >
>  >
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]