[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Duvidas: if junto com o test
From: |
Andreyev Dias de Melo |
Subject: |
Re: [shell-script] Duvidas: if junto com o test |
Date: |
Sat, 15 Jan 2005 14:15:34 -0200 |
On Sat, 15 Jan 2005 11:08:03 -0300 (ART), Nicole <address@hidden> wrote:
>
> Bom colegas tenho um pequena dúvida.
>
> Estou fasendo uns exercícios com if e test só q junto
> com o resultado ele traz uma mensagem de erro.
>
> Obs: O script traz o resultado normalmente só q no
> final vem essa mensagem:
>
> ./nteste: [: too many arguments
>
> O que significa?
>
> abaixo esta o script:
>
> nicole@CEU:~$ cat nteste
>
> #!/bin/sh
>
> # nteste
> # Objetivo ler 3 numeros e dizer qual é o maior deles.
>
> echo 'digite o primeiro número'
> read n1
> echo 'digite o segundo número'
> read n2
> echo "digite o terceiro numero "
> read n3
>
> # Abaixo a explicação do funcionamento do teste em
> cada linha.
>
> if [ -a $n1 -gt $n2 $n3 ]; then # verifica se n1 é
> maior que n2 e n3
> MAIOR="$n1" # Se for verdade declara q o MAIOR é
> n1
> else
> MAIOR="$n3" # Caso contrário o MAIOR é n3
> if [ $n2 -gt $n3 ]; then # Verifica se n2 é maior que
> n3
> MAIOR="$n2" # Se for verdade declara q n2 é o
> MAIOR
> else # Caso contrário o n3 é o MAIOR
> MAIOR="$n3"
> fi
> fi
>
> echo "O maior número é: $MAIOR "
Vc pode proteger o valor de suas variaveis com aspas duplas("),
variaveis vazias com quem contem o IFS(Internal Field Separator) e que
não sao protegidas por aspas duplas são grandes causas de erros.
Observe que as aspas simples(') impedem a expansão da variavel.
BTW, parece que o problema do seu test é de "sintaxe"(estou longe do
bash para testar...). Tente usar os parametros '-o'(or) e '-a'(and) do
test:
[ "$n1" -gt "$n2" -a "$n1" -gt "$n3" ] && MAIOR="$n1"
E assim em diante... ou sem usar o test:
MAIOR=$(echo -ne '"$n1"\n"$n2"\n"$n3" | sort -n | tail -1)
Mas eu não pude testar isso pq nao tenho um bash aqui...)-:
HIH!
--
Andreyev
PS: no bash nao é "if,elsif,...,else,fi" ?