我想从用户那里获取输入(在运行时)并存储到数组中,直到用户输入,例如" q"。 我在接受输入时遇到问题。到目前为止,我得到的最接近的工作代码如下:
while read inputs
do
array=("${array[@]}" $inputs)
done
echo User1 has:${array[0]}
echo User2 has:${array[1]}
echo User3 has:${array[2]}
Output
User1 has:123
User2 has:asd
User3 has:qw12
但问题是我必须按Ctrl + D(EOF)才能告诉我没有更多的输入。我还尝试过其他方法,其中大多数都是错误的
counter=1
read array;
for i in ${array[@]};do
User$counter=$i
echo User$counter
done
有没有更好的方法来进行数组输入?请帮忙。
答案 0 :(得分:2)
您可以像这样使用read -n 1
:
printf "Enter your input [ q to stop ]: "
input=
while read -rn1 ch && [[ $ch != 'q' ]]; do
input+="$ch"
done
printf "\ninput=[%s]\n" "$input"
<强>输出:强>
Enter your input [ q to stop ]: asdfghjklq
input=[asdfghjkl]
您不需要按Enter或ctrl-D。一旦按下q
,此循环将终止。
答案 1 :(得分:2)
[ "$inputs" == "done" ] && break
只需添加此内容并输入 done 即可退出
示例强>
while read inputs
do
[ "$inputs" == "done" ] && break
array=("${array[@]}" $inputs)
done