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

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

Re: [shell-script] CASE + Função


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] CASE + Função
Date: Fri, 24 Feb 2006 11:20:17 -0300

Veja se assim não funfa:

#!/bin/bash
LOGS(){
if [ "$1" == "" ]; then
    echo "Necessário digitar o e-Mail."
fi
}

## MAIN
case "$1" in
      --logs|-l)
        LOGS "$2" ;;
*) echo "..." ;;
esac

O que acontece que $1... $9 são variaveis especiais que operam dentro do
script e funções. Entretanto o $1 de uma função não é a $1 do script. Assim
com o script, cada função acessa o seu conjunto de parâmetros. Vc estava
tentando acessar o argumento 2 da função LOGS, quando não estava passando
nenhum.

Pra ficar mais claro

#!/bin/bash

teste() {
 echo "$1 -> $2 -> $3" # aqui vc pega os argumentos da funcao
}

echo "$1: $2 : $3" # aqui vc pega os argumentos do script
teste um dois tres # tcharam, vc ta passando outros argumentos...
#fim script

executa agora o script assim

./scritp 1 2 3

vc vai ver algo como
1 : 2 : 3
um -> dois -> tres

Outra forma é vc criar uma variavel comum.

#!/bin/bash
LOGS(){
if [ "x$EMAIL" == "x" ]; then
    echo "Necessário digitar o e-Mail."
fi
}

## MAIN
EMAIL=$2
case "$1" in
      --logs|-l)
        LOGS  ;;
*) echo "..." ;;
esac

(o lance do x$VAR == x eu peguei de uns scripts de alguns deamons, achei
interessante).

Abraços

Tiago
Em 24/02/06, +[+ Suicide|Solution +]+ <address@hidden> escreveu:
>
>  Galera, resolvi dividir meu script por funções para ficar mais fácil,
> porém depois disso o IF, não funfa, to me quebrando aqui e não consegui
> entender o pq:
>
> Script:
> #!/bin/bash
> LOGS(){
> if [ "$2" == "" ]; then
>     echo "Necessário digitar o e-Mail."
> fi
> }
>
> ## MAIN
> case "$1" in
>       --logs|-l)
>         LOGS;;
> *)
> esac
>
> Resultado:
> prompt> imsniff-logs -l
> Necessário digitar o e-Mail.
>
> prompt> imsniff-logs -l address@hidden
> Necessário digitar o e-Mail.
>
> Ou seja, passando o segundo parametro ou não o IF sempre interpreta o $2
> como vaziu!
> Estranho que se copia o bloco do if e passar para dentro do CASE, funfa!
> PQ???????
>
>
> --
> +++++++++++++++++++++++++++++++++++
> + Felipe Nogaroto Gonzalez  \m/   +
> +          <aka Suicide|Solution> +
> +      Slackware Linux :^)        +
> + http://suicide.bunghole.com.br  +
> +++++++++++++++++++++++++++++++++++
>
>
>
>  ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
>
>
>  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
> <http://br.ard.yahoo.com/SIG=12fcoh2t0/M=396547.7942355.8867957.2369893/D=brclubs/S=2137111254:HM/Y=BR/EXP=1140797401/A=3322891/R=2/id=noscript/SIG=154qqv6j6/*http://lt.dell.com/lt/lt.aspx?CID=11460&LID=316158&DGC=BA&DGSeg=DHS&DURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs>
> ------------------------------
> *Links do Yahoo! Grupos*
>
>    - Para visitar o site do seu grupo na web, acesse:
>    http://br.groups.yahoo.com/group/shell-script/
>
>    - Para sair deste grupo, envie um e-mail para:
>    address@hidden<address@hidden?subject=Unsubscribe>
>
>    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
>


--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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