/ Príkaz / Read nefunguje podľa očakávania z dôvodu [When duplikát] - linux, bash, macos, shell, unix

Príkaz na čítanie nefunguje podľa očakávania kvôli funkcii Zatiaľ čo [duplikát] - linux, bash, macos, shell, unix

Čelím čudnej chybe,

Mám súbor, ktorý má nejaké vstupy a na základe týchto vstupov žiadam potvrdenie používateľa a pokračujem v činnostiach (ako je uvedené nižšie),

#!/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

Z dôvodu pri čítaní riadku vo funkcii skutočný read -p "[y / n]:" vyberá vstup z vyššie uvedeného testovanie a nie zo súboru STDIN.

Program funguje dobre, ak odstránite testovanie na mačkách | pri čítaní riadku slučka (čo samozrejme nie je to, čo chcem).

Stretol sa niekto s týmto problémom skôr, alebo mi môže niekto pomôcť vyriešiť tento problém?

Vopred ďakujem !

odpovede:

2 pre odpoveď č. 1

Použite iný deskriptor súboru (a nie potrubie) pre testing.

while IFS= read -r line <&3; do
...
done 3< testing