bash是否支持在读取循环中嵌套读取?

时间:2013-04-30 20:05:54

标签: bash

bash read命令非常方便:

  • 读取 -p以提示用户并捕获用户的输入
  • 读取循环以遍历文件行。

然而,我在试图同时做两件事时遇到了问题。

例如:

#!/bin/bash

while read item
do

    echo Item: $item

    read -p "choose wisely: " choice

    echo You still have made a $choice.

done < /tmp/item.list 

bash使用item.list文件中的下一个项目填充$ choice,而不是阻止和等待用户输入选项。

bash是否支持在读取循环中嵌套读取?

1 个答案:

答案 0 :(得分:29)

最简单的解决方法是从另一个文件中读取外部read 描述符而不是标准输入。在Bash中,-u选项使得a 更容易。

while read -u 3 item
do
  # other stuff
  read -p "choose wisely: " choice
  # other stuff
done 3< /tmp/item.list