ユーザーが特定の項目を入力するまで、ユーザー入力を配列に読み込みます。

ユーザーが特定の項目を入力するまで、ユーザー入力を配列に読み込みます。

ユーザーの入力を受け取り、ユーザーが特定の項目を入力するまで配列に挿入する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機能しません。これは生の入力として扱われます。

関連情報