`read` から単語を分割して配列に保存しますか?

`read` から単語を分割して配列に保存しますか?

readから入力を取得し、単語をスペースで分割して、それらの単語を配列に格納するにはどうすればよいですか?

私が欲しいのは:

$ read sentence
this is a sentence
$ echo $sentence[1]
this
$ echo $sentence[2]
is
(and so on...)

私はこれを使用して、テキストアドベンチャーの英語の文章を処理しています。

答え1

を使用している場合bash、そのreadコマンドには-aそのためのオプションがあります。

からhelp read

Options:
  -a array  assign the words read to sequential indices of the array
        variable ARRAY, starting at zero

それで

$ read -a s
This is a sentence.

結果の配列はゼロインデックスなので、

$ echo "${s[0]}"
This
$ echo "${s[1]}"
is
$ echo "${s[2]}"
a
$ echo "${s[3]}"
sentence.
$ 

答え2

@steeldriverの回答と似たような回答

#!/bin/bash
printf "Input text:" && read UI ;
read -a UIS <<< ${UI} ;
X=0 ;
for iX in ${UIS[*]} ; do printf "position: ${X}==${iX}\n" ; ((++X)) ; done ;

関連情報