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

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

Resgatendo valor de uma variável em um loop while


From: Rudson
Subject: Resgatendo valor de uma variável em um loop while
Date: Tue, 01 Mar 2011 12:28:39 -0000
User-agent: eGroups-EW/0.82

Olá pessoal,

Fiz um loop para verificar os arquivos xz com defeito em alguns sub-diretórios. 

O loop:

LIST=""; find xap/. -name *.txz | while read F; do if xz -t $F 2>/dev/null; 
then echo "[Ok] - $F"; else echo -e "\e[31;1m[Error] $F\e[m"; LIST="$LIST\n$F"; 
fi; done; echo -e "List of Erros: $LIST"


O loop em si funcionou muito bem, mas tive um retorno o qual não compreendi, da 
variável LIST.

A meu ver, esta variável deveria conter os nomes dos arquivos com erro na 
compactação, ao final do loop. Verifiquei com o debug de linha de comando (set 
-x) e vi que a variável LIST estava sendo preenchida adequadamente, mas ao 
final do loop, seu valor é perdido, retornando uma string vazia. 

...
+ echo -e '\e[31;1m[Error] xap/./blackbox-0.70.1-x86_64-4.txz\e[m'
[Error] xap/./blackbox-0.70.1-x86_64-4.txz
+ LIST='\nxap/./blackbox-0.70.1-x86_64-4.txz'
...
+ echo -e '\e[31;1m[Error] xap/./sane-1.0.22-x86_64-1.txz\e[m'
[Error] xap/./sane-1.0.22-x86_64-1.txz
+ LIST='\nxap/./blackbox-0.70.1-x86_64-4.txz\nxap/./sane-1.0.22-x86_64-1.txz'
+ read F
...
+ read F
+ echo -e 'List of Erros: '
List of Erros: 

Como pode ser visto acima, a variável é preenchida adequadamente, mas no echo 
final ela parece desaparecer. Verifiquei com um echo após a execução e a 
variável está mesmo vazia. Me parece algum problema de escopo de variável ou no 
meu bash, realmente não sei.

Aqui, segue a linha aberta para ficar mais claro:

LIST=""
find xap/. -name *.txz | while read F; do 
  if xz -t $F 2>/dev/null; then 
    echo "[Ok] - $F"; 
  else 
    echo -e "\e[31;1m[Error] $F\e[m"; LIST="$LIST\n$F"; 
  fi; 
done; 
echo -e "List of Erros: $LIST"

Alguém poderia explicar isto?




reply via email to

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