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