在第一个循环中,它等待用户输入内容,而在第二个循环中,它没有。
for f in *; do
echo $f
IFS= read -r opt
done
find . -maxdepth 1 -type f -name "*" | while read f; do
echo $f
IFS= read -r opt
done
问题
如何让 while 循环像 for 循环一样等待用户输入?
最佳答案
问题在于循环发生在管道中,因此标准输入被重定向到上一个管道命令的输出。您可以使用 exec
将普通标准输入重定向到不同的文件描述符并从那里读取用户输入:
exec 3<&0
find . -maxdepth 1 -type f -name "*" | while read f; do
echo $f
IFS= read -r -u3 opt
echo $opt
done
exec 3<&- # Close fd3
关于linux - 如何让while循环等待用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124555/