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

[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" ?


reply via email to

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