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

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

Re: [shell-script] read dentro de while read


From: Julio C. Neves
Subject: Re: [shell-script] read dentro de while read
Date: Wed, 9 Feb 2011 12:43:52 -0200

Fala Victor,
troque a linha:

read -e yn

por:

read -e yn < /dev/tty

Isso pq qd vc fez: 'done < teste.txt', ordenou que todas as entradas do seu
loop seriam feitas pelo arquivo teste.txt. Então é necessário explicitar que
nesse caso, a entrada é do teclado padrão.

Abraços,

Julio

*Cursos de Shell ou Zenity em fins de semana?*

*☎ Ligue (21) 8112-9988* ☎


Em 9 de fevereiro de 2011 11:50, Victor Hugo Leite <
address@hidden> escreveu:

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


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



reply via email to

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