对于以下命令,如何知道输入中给出了多少个单词?
$ 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
实用程序以及 shell 的标准变量扩展机制,然后将生成的元素数量分配给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.