次のコマンドでは、入力にいくつの単語が与えられたかどうかを知ることができますか?
$ 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.