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

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

RES: [shell-script] O IF NÃO FUNCIONA PQ ?


From: Rodolfo Villanova
Subject: RES: [shell-script] O IF NÃO FUNCIONA PQ ?
Date: Thu, 3 Mar 2005 16:47:35 -0300

Beleza, Julio!

Pois sob Korn-Shell funcionou da mesma forma!

Grato,
-------
Rodolfo

> -----Mensagem original-----
> De: Julio Cezar Neves - DATAPREVRJ
> [mailto:address@hidden]
> Enviada em: quinta-feira, 3 de março de 2005 16:32
> Para: address@hidden
> Assunto: RES: [shell-script] O IF NÃO FUNCIONA PQ ?
>
>
>
> Poizé Tchê,
> foi exatamente o que eu disse. No Bash tb é necessário o caminho completo.
> Para o teu exemplo funcionar no Bash é necessário a seguinte sintaxe:
>
> var=6
> if /usr/bin/[ $var -gt 5 ; then
>    echo var maior que 5
> else
>    echo var menor ou igual a 5
> fi
>
> [ ]s,
> Julio
> :wq
>
> | -----Mensagem original-----
> | De: Rodolfo Villanova
> | [mailto:address@hidden]
> | Enviada em: quinta-feira, 3 de março de 2005 16:09
> | Para: address@hidden
> | Assunto: RES: [shell-script] O IF NÃO FUNCIONA PQ ?
> |
> |
> |
> | Beleza, manos Gustavo e Julio Neves!
> |
> | Realmente eu não conhecia essa "idiossincrasia" do comando test.
> |
> | Só não gostei que, pelo menos no Unix OSF1 (True64), é
> | preciso colocar o
> | caminho absoluto do binário pra ele executar corretamente,
> | não aceitando
> | colocar somente o "abre-colchete" ( [ ) na expressão, mesmo que tenha
> | agregado ao PATH do ambiente o referido caminho. Do jeito
> | testado abaixo,
> | ele verifica a sintaxe do "alias" do comando test:
> |
> | $ cat TESTE
> | #!/bin/ksh
> | var=6
> | if [ $var -gt 5 ; then
> |    echo var maior que 5
> | else
> |    echo var menor ou igual a 5
> | fi
> | $ TESTE
> | TESTE[4]: test: ] missing
> | var menor ou igual a 5
> |
> | 1 abraço,
> | --------------------------
> | Rodolfo D. Gross Villanova
> |
> | > -----Mensagem original-----
> | > De: address@hidden [mailto:address@hidden]
> | > Enviada em: quinta-feira, 3 de março de 2005 12:25
> | > Para: address@hidden
> | > Assunto: Re: [shell-script] O IF NÃO FUNCIONA PQ ?
> | >
> | > >>>>> On Thu, 3 Mar 2005 11:17:17 -0300, "Rodolfo Villanova"
> | > <address@hidden> said:
> | >
> | >   > Deve ter ocorrido um erro de digitação na linha do if; como
> | > já apontando por
> | >   > outros na lista, a sintaxe correta para teste é abrir e
> | > fechar colchetes:
> | >   > [ ... ]. Troque o "fecha-chaves" ( } ) pelo
> | "fecha-colchete" ( ] ).
> | >
> | > Na verdade, não se trata realmente de sintaxe.  Mas esse problema é
> | > tão comum que vale a pena tentar melhor.
> | >
> | > O 'if' da Bourne Shell (e, por extensão, o da bash e da ksh, entre
> | > outras) não testa expressões diretamente, mas sim o resultado de uma
> | > lista de comandos.  A sintaxe é a seguinte (tirado do comando 'help
> | > if' na bash):
> | >
> | >   if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then
> | > COMMANDS; ]... [ else COMMANDS; ] fi
> | >       The if COMMANDS are executed.  If the exit status is
> | > zero, then the then
> | >       COMMANDS are executed.  Otherwise, each of the elif
> | > COMMANDS are executed
> | >       in turn, and if the exit status is zero, the
> | > corresponding then COMMANDS
> | >       are executed and the if command completes.  Otherwise,
> | > the else COMMANDS
> | >       are executed, if present.  The exit status is the exit
> | > status of the last
> | >       command executed, or zero if no condition tested true.
> | >
> | > Portanto, podemos fazer coisas interessantes do seguinte tipo:
> | >
> | >   if grep -q meunome *.txt
> | >   then echo achei
> | >   else echo não achei
> | >   fi
> | >
> | > Note que o if testa o resultado do comando grep.
> | >
> | > O tal colchete ([) que vemos normalmente depois de um if não é um
> | > elemento sintático, mas simplesmente um alias do comando 'test'.
> | > Veja:
> | >
> | >   $ type -a [
> | >   [ is a shell builtin
> | >   [ is /usr/bin/[
> | >
> | > Ooops.  A bash implementa o '[' como uma builtin pra otimizar, mas
> | > note que além da builtin existe um arquivo executável no
> | meu path com
> | > o nome '/usr/bin/['.  Vejamos:
> | >
> | >   $ ls -l /usr/bin/[
> | >   -rwxr-xr-x  1 root root 23928 2004-07-16 08:37 /usr/bin/[
> | >
> | > Em algums outros UNIXes (eu estou num Linux) o /usr/bin/[ é um link
> | > simbólico para o comando /usr/bin/test.
> | >
> | > Experimente um 'man [' pra ver mais sobre isso.
> | >
> | > E lembre-se que o if testa comandos, o que abre todo um leque de
> | > possibilidades interessantes.
> | >
> | > Gustavo
> |
> |
> |
> |
> | ---------------------------------------------------------------------
> | 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
> ---------------------------------------------------------------------
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> 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
---------------------------------------------------------------------

Links do Yahoo! Grupos











reply via email to

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