readarray关键字停止值
问题描述:
我的目标是将用户输入读取到数组中以供以后在bash脚本中使用。只要用户知道按下CTRL + D来终止readarray命令,它就可以在用户输入并将其放入数组中的情况下工作。readarray关键字停止值
有没有告诉读取数组,一旦它遇到特定的关键字,如“完成”或“结束”,停止读取输入行?
我试着仰视的方式来终止命令,但我新打坏,所以我不知道这是可能的一段时间/ for循环,如:
echo Type 'done' when finished
while true
do
readarray -t serverlist
if [ "$LINE" = "done" ]
then
false
fi
done
答
readarray
是阅读其所有标准输入,包括任何哨兵像done
或end
,然后才有机会对其进行测试。您必须按照read
逐行读取输入,并将每个适当的行附加到数组中。
echo 'Print "done" when finished'
while IFS= read -r line; do
[[ $line = done ]] && break
serverlist+=("$line")
done
+0
谢谢@chepner,这是有效的,但我确实将“$ line = end”更改为“$ line = done”,否则它希望你输入“end”来停止输入。我感谢帮助! – Mormodes
可能是'break'? 。祝你好运。 – shellter
不幸的是,我拥有的代码在很多方面很可能是错误的。它甚至不会终止CTRL + D上的readarray,我认为它创建了一个无限的真正循环。我尝试了休息,结果是一样的。尽管谢谢你的回应! – Mormodes
你确实有'完成了'关闭'while'循环? (未在上面的代码中显示,请修复)。祝你好运。 – shellter