我面临一个奇怪的错误,
我有一个有一些输入的文件,根据这些输入我要求用户确认并继续操作(如下所示),
#!/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
由于函数中的 读取行 ,实际的 读取-p“[y / n]:” 正在从上面的测试文件中选择输入,而不是从STDIN中选择。
如果删除 cat testing |,程序运行正常读取行 循环(这显然不是我想要的)。
之前是否有人面对此问题或有人可以帮助我解决此问题吗?
提前致谢!
答案 0 :(得分:2)
为testing
使用不同的文件描述符(不管道)。
while IFS= read -r line <&3; do
...
done 3< testing