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