readarray 关键字终止值

readarray keyword stop value

我的目标是将用户输入读取到一个数组中,以便以后在 bash 脚本中使用。它的工作原理是获取用户输入并将其放入数组中,但前提是用户知道按 CTRL+D 来终止 readarray 命令。

有没有办法告诉读取数组在遇到特定关键字(如 "done" 或 "end" 时停止读取输入行?

我已经尝试寻找终止命令的方法,但我是 bash 的新手,所以我不确定 while/for 循环是否可行,例如:

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

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

readarray 将读取其所有标准输入,包括 doneend 等任何标记,然后您才有机会对其进行测试。您必须使用 read 逐行读取输入,并自行将每个适当的行附加到数组。

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