Bash

將使用者輸入讀入數組,直到使用者輸入特定條目

  • February 25, 2020

我需要創建一個 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(沒有最後一個空格字元),但是使用特殊字元(如Delor )的行編輯Backspace不起作用。它們被視為原始輸入。

引用自:https://unix.stackexchange.com/questions/526451