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

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

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


From: Gustavo Chaves
Subject: Re: RES: [shell-script] O IF NÃO FUNCIONA PQ ?
Date: 03 Mar 2005 22:19:09 -0300
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3

  > No meu ksh não funciona. Ferramenta proprietária é fogo, cada um dá a sua
  > modificada para perder a compatibilidade...

Dependendo da versão da ksh que você usa ela pode ser livre.  De
acordo com o site oficial (www.kornshell.com), em março de 2000 a AT&T
liberou os fontes da ksh93 sob a licença CPL-1.0.

  Prompt> echo $SHELL
  > /bin/ksh
  Prompt> var=6
  Prompt> if /usr/bin/[ $var -gt 5 ; then
  >> echo var maior que 5
  >> else
  >> echo var menor ou igual a 5
  >> fi
  Prompt> > > > ksh: /usr/bin/[:  not found
  > var menor ou igual a 5

  > Este é o /bin/ksh do SVR4.

Eu acho que o problema não é da shell, mas o fato de que no seu
sistema não existe o arquivo /usr/bin/[.  Veja o que o corre numa
máquina Solaris 2.8 (também SVR4):

        dragon$ uname -a
        SunOS dragon 5.8 Generic_108528-11 sun4u sparc

        dragon$ ksh
        dragon$ var=6
        $ if /usr/bin/[ $var -gt 5 ; then echo var maior que 5; else echo var 
menor ou igual a 5; fi
        ksh: /usr/bin/[:  not found
        var menor ou igual a 5

Mesma mensagem que a sua, com ksh.  A mensagem diz que o arquivo
/usr/bin/[ não existe.

        $ if [ $var -gt 5 ; then echo var maior que 5; else echo var menor ou 
igual a 5; fi
        ksh: test: ] missing
        var menor ou igual a 5

Usando apenas '[' a mensagem mudou.  Note quem é que está gerando a
mensagem de erro: o comando test!  Ele diz que está sentindo falta de
um ']'.  Como eu disse antes, quando ele é chamado com o nome '[' ele
faz questão de ter um ']' depois da expressão.

        $ if [ $var -gt 5 ]; then echo var maior que 5; else echo var menor ou 
igual a 5; fi
        var maior que 5

Tudo ok agora.  Ou, se quisermos ser mais diretos:

        $ if test $var -gt 5 ; then echo var maior que 5; else echo var menor 
ou igual a 5; fi
        var maior que 5


Agora com a bash:

        dragon$ bash
        dragon$ var=6
        dragon$ if /usr/bin/[ $var -gt 5 ; then echo var maior que 5; else echo 
var menor ou igual a 5; fi
        bash: /usr/bin/[: No such file or directory
        var menor ou igual a 5
        dragon$ if [ $var -gt 5 ; then echo var maior que 5; else echo var 
menor ou igual a 5; fi
        [: missing `]'
        var menor ou igual a 5
        dragon$ if [ $var -gt 5 ]; then echo var maior que 5; else echo var 
menor ou igual a 5; fi
        var maior que 5
        dragon$ if test $var -gt 5 ; then echo var maior que 5; else echo var 
menor ou igual a 5; fi
        var maior que 5
        
Exatamente as mesmas mensagens que com a ksh.

Gustavo.


reply via email to

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