我有一个Bash文件,会提示用户输入一些参数,并在没有任何输入时使用默认值。然后,该脚本将使用这些参数执行其他命令。这一切都很顺利,直到最近加入的部分。
为了从txt文件中读取NAMES参数,我添加了一个while循环以接收文件中的名称,但我仍想提示输入剩余参数。
但是一旦添加了while循环,输出显示get_ans()中的打印提示,但不会暂停读取操作,因此所有默认值都被选中。
我想从文件中读取第一个参数,然后从提示用户输入的所有后续文件中获取参数。
为什么添加while循环会导致出现问题?
(注意:代码不可复制粘贴,请见谅错别字。实际代码在主函数之前定义)
为了从txt文件中读取NAMES参数,我添加了一个while循环以接收文件中的名称,但我仍想提示输入剩余参数。
但是一旦添加了while循环,输出显示get_ans()中的打印提示,但不会暂停读取操作,因此所有默认值都被选中。
我想从文件中读取第一个参数,然后从提示用户输入的所有后续文件中获取参数。
为什么添加while循环会导致出现问题?
cat list.txt |
while read line
do
get_ans "Name" "$line"
read NAME < $tmp_file
get_ans "Name" "$line"
read NAME < $tmp_file
done
function get_ans
{
if [ -f $tmp_file ]; then
rm $tmp_file
PROMPT=$1
DEFAULT=$2
echo -n "$PROMPT [$DEFAULT]: "
read ans
if [ -z "$ans" ]; then
ans="$DEFAULT"
fi
echo "$ans" > $tmp_file
}
(注意:代码不可复制粘贴,请见谅错别字。实际代码在主函数之前定义)