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

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

Re: [shell-script] Duvida com while e shift


From: Julio C. Neves
Subject: Re: [shell-script] Duvida com while e shift
Date: Thu, 5 Nov 2009 16:15:02 -0200

Vamos entender o que vc está fazendo:

while [ $1 ] ; do
[ ! -f "$1" ] && echo "$1 nao existe" && exit 1
shift
done

echo "Arquivo $1 :"
echo "Arquivo $2 :"

enquanto a variável $1 estiver definida; faça
    se não existir o arquivo com o nome contido na variável, dê msg de erro
e termine o prog.
    caso contrário, jogue fora a variável
feito

O que o Fabiano (que sabe muito de shell, ER, awk e sed) disse, e é verdade,
é que na saída do loop jamais vc terá o $1 definido, já que vc o destroi com
o shift caso o tal arquivo exista.

Uma dica: a construção: [ ! -f "$1" ] && echo "$1 nao existe" && exit 1
fica muito melhor e mais fácil de depurar assim:

[ ! -f "$1" ] && {
    echo "$1 nao existe"
    exit 1
    }

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- No RJ ligue (21) 2561-0867;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.
      ULTRA MARATONA DE SW LIVRE NO RIO DE JANEIRO
Dias 07-08/11 com vários minicursos, inclusive de Zenity.
    Detalhes em http://www.ultramaratonahowto.com.br


2009/11/5 Cristiano Amaral <address@hidden>

>
>
> Fabiano, a tua conclusão está equivocada... Meu problema em si não é a
> verificação do parâmetro, mas sim a saída das duas variaveis ($1 $2) que
> estão zeradas depois do fim do while...
>
> #!/bin/bash
>
> while [ $1 ] ; do
> [ ! -f "$1" ] && echo "$1 nao existe" && exit 1
> shift
> done
>
> echo "Arquivo $1 :"
> echo "Arquivo $2 :"
>
> > Cristiano, você manda encerrar a execução do script caso o comando
> > echo seja bem sucedido. Como sempre será bem sucedido, toda vez que o
> > test retornar true, o script será interrompido. Isto fará com que os
> > echos não sejam executados.
> >
> > Isto não tem nada a ver com o shift. Se você passar dois parâmetros
> > para o script, sendo o primeiro um arquivo existente e o segundo um
> > arquivo inexistente, você verá o seu script funcionar.
> >
> > --
> > Fabiano Caixeta Duarte
> > Especialista em Redes de Computadores
> > Linux User #195299
> > Ribeirão Preto - SP
> >
> >
> > <address@hidden <fcd.listas%40gmail.com>
> ?subject=Re:+%5Bshell-script%5D+Duvida+com+while+e+shift>
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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