Bash
將使用者輸入讀入數組,直到使用者輸入特定條目
我需要創建一個 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 )
我怎麼能做到這一點?
使用換行符作為預設分隔符:
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
or )的行編輯Backspace
不起作用。它們被視為原始輸入。