Staję przed dziwnym błędem,
Mam plik, który ma pewne dane wejściowe i na podstawie tych danych pytam o potwierdzenie użytkownika i kontynuuję czynności (jak pokazano poniżej),
#!/bin/bash
func() {
cat testing | while read line
do
if [ $line = "hi" ]
then
while true
do
read -p "[y/n] : " c
case $c in
[nN] ) return 1;;
[yY] ) return 0;;
* ) echo "Enter y/Y or n/N";;
esac
done
fi
echo "HELLO !!"
done
}
func
Ze względu na podczas czytania linii w funkcji rzeczywista przeczytaj -p "[y / n]:" wybiera dane wejściowe z powyższego testowanie plik, a nie od STDIN.
Program działa poprawnie, jeśli usuniesz testowanie kotów | podczas czytania linii pętla (co oczywiście nie jest tym, czego chcę).
Czy ktoś wcześniej zmierzył się z tym problemem lub Czy ktoś może mi pomóc rozwiązać ten problem?
Z góry dziękuję !
Odpowiedzi:
2 dla odpowiedzi № 1Użyj innego deskryptora pliku (i nie rura) testing
.
while IFS= read -r line <&3; do
...
done 3< testing