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

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

read dentro de while read


From: Victor Hugo Leite
Subject: read dentro de while read
Date: Wed, 9 Feb 2011 11:50:41 -0200

Bom dia Senhores,

Estou desenvolvendo um script para processar um arquivo e me deparei com o
seguinte problema:

Preciso executar um read, com interação via terminal, dentro de um while
read... porém isso esta gerando um looping infinito, alguem pode me dar uma
luz de qual a melhor forma de fazer isto ?

O "read yn" nao esta aguardando a interação via terminal.

[~] # cat teste.txt
   aaaa
   bbbb
   cccc
#   dddd
   eedd
   ffff
#   dddd
   gddg
   dddd

[~] # cat teste.sh
#!/bin/bash

xx=XX

while IFS=$'?' read linha; do
if echo "${linha}" | egrep -v '^#.*$' >/dev/null; then
echo "${linha}"
elif echo "${linha}" | fgrep "dd" >/dev/null; then
echo "Voce deseja adicionar ${xx} a esta linha ? [y/n]"
read  yn
while [ -z $(echo "$yn" | grep -E '^[yYnN]$') ]; do
echo "Opcao invalida, tente novamente:"
read -e yn
done
case $yn in
y|Y) echo "Adicionando ${xx} a linha."
echo "${linha},${xx}"
;;
n|N) echo "Ok, linha nao alterada."
echo "${linha}"
     ;;
esac
else
echo "${linha}"
fi

done < teste.txt

[~] # sh teste.sh
   aaaa
   bbbb
   cccc
Voce deseja adicionar XX a esta linha ? [y/n]
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:
Opcao invalida, tente novamente:


Att,
Victor Hugo Leite


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



reply via email to

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