将用户输入读取到数组中,直到用户输入特定条目

将用户输入读取到数组中,直到用户输入特定条目

我需要创建一个 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不起作用。它们被视为原始输入。

相关内容