[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"