readarray关键字停止值

时间:2017-08-30 18:31:12

标签: bash termination sentinel

我的目标是将用户输入读入数组,以便以后在bash脚本中使用。它可以在用户输入并将其放入数组中,但前提是用户知道按CTRL + D以终止readarray命令。

有没有告诉读取数组在输入特定关键字后会停止读取输入行,例如" done"或者"结束"?

我已经尝试了查找终止命令的方法,但我不熟悉bash,所以我不确定这是否可以使用while / for循环,例如:

echo Type 'done' when finished
while true
do
    readarray -t serverlist

if [ "$LINE" = "done" ]
then
    false
fi
done

1 个答案:

答案 0 :(得分:1)

readarray将会在您有机会测试之前阅读所有标准输入,包括doneend之类的标记。您必须逐行读取输入行read,并自行将每个相应的行附加到数组中。

echo 'Print "done" when finished'
while IFS= read -r line; do
    [[ $line = done ]] && break
    serverlist+=("$line")
done