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