「読み取り」コマンドに入力された単語数をどのように知ることができますか?

「読み取り」コマンドに入力された単語数をどのように知ることができますか?

次のコマンドでは、入力にいくつの単語が与えられたかどうかを知ることができますか?

$ read text

入力「テキスト」の単語数を計算する新しい変数を使用したいと思います。例えば、

$ read text
apple

変数がxの場合、その値は「1」です。

次のために、

$read text
apple banana

'x'の値は2です。

答え1

即時のbashオプションもあります。-a次のオプションを使用してくださいread

read -a text
echo "The input '${text[@]}' contains ${#text[@]} words."

この-aオプションを使用すると、変数は通常のIFS区切り文字を使用して取得した単語の配列です。詳細については、man bash組み込みコマンドを参照してください。

答え2

別のアプローチは次のとおりです。既存の変数を読み、POSIX標準を使用してください。setユーティリティをシェルの標準変数拡張メカニズムとともに使用し、結果要素の数を次に割り当てますx

read text
set -f        ## disable filename generation ("globbing")
set -- $text
x=$#

答え3

wc -w単語数を数えるために使用できます。 (これを見てくださいman wc。)

$ read text
apple banana
$ echo $text
apple banana
$ echo $text|wc -w
2
$ x=$(echo $text|wc -w)
$ echo $x
2
$ echo "The input '$text' contains $x words."
The input 'apple banana' contains 2 words.

関連情報