【发布时间】:2012-03-30 02:38:20
【问题描述】:
我有一个 bash 文件,它提示用户输入一些参数,如果没有给出任何参数,则使用默认值。然后脚本继续使用参数执行一些其他命令。 这很有效 - 直到最近添加之前没有问题。
在尝试从 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
}
(注意:代码不是复制粘贴,所以请原谅拼写错误。实际代码在 main() 之前定义了函数)
【问题讨论】:
-
在决定接受之前,我会先看看你的其他答案(其中一个告诉你如何解决问题,而不仅仅是它是什么)。跨度>
标签: linux bash while-loop