我需要创建一个 bash 来获取用户的输入并将它们插入到数组中,直到用户输入特定的内容。例如,如果我运行脚本:
enter variables: 3 4 7 8 ok
我得到这个数组:array=( 3 4 7 8 )
或者:
enter variables: 15 9 0 24 36 8 1 ok
我得到这个数组:array=( 15 9 0 24 36 8 1 )
我怎样才能做到这一点?
答案1
使用换行符作为默认分隔符:
read -a array -p "enter variables: "
如果您想要与换行符不同的字符,例如y
:
read -a array -d y -p "enter variables: "
您只能使用单个字符作为 的分隔符read
。
编辑:
与分隔符一起使用的解决方案ok
:
a=
delim="ok"
printf "enter variables: "
while [ "$a" != "${a%$delim}${delim}" ]; do
read -n1 # read one character
a="${a}${REPLY}" # append character
done
array=(${a%$delim}) # remove "ok" and convert to array
unset a delim # cleanup
echo # add newline for following output
笔记:此版本还接受表单的输入3 4 7 8ok
(没有最后一个空格字符),但使用特殊字符(如Del或 )进行行编辑Backspace不起作用。它们被视为原始输入。