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