以空格分隔的字符串长度

以空格分隔的字符串长度

我在 Ubuntu bash 脚本中有一个变量,我想提取它的长度:

var_names='test1 tutorial2 test3w'

在 Python 列表中,我可以这样做len(var_names),结果将是 3。我需要在 Bash 脚本中执行类似操作 -我需要找到一种方法来确定字符串的长度,并且答案是 3

我的尝试:

我尝试将其转换为数组然后测试其长度:

arr=($var_names)
echo ${#arr[@]}

然而:

echo $arr

只给予

test1

问题:

如何在 bash 中获取这个变量的长度,以便返回的长度为 3?

答案1

您的方法是正确的,${#arr[@]}将为您提供数组中元素的数量(在本例中为 3):

$ var_names='test1 tutorial2 test3w'
$ arr=($var_names)
$ echo ${#arr[@]}
3

您还可以使用 返回各个数组元素的字符串长度${#arr[0]}${#arr[1]}依此类推:

$ echo "${#arr[0]}"
5
$ echo "${#arr[1]}"
9
$ echo "${#arr[2]}"
6

$arr只返回第一个元素的原因test1是它相当于${arr[0]};如果要返回整个数组,可以使用${arr[@]}${arr[*]}

echo "${arr[@]}"
test1 tutorial2 test3w

Arrays请参阅man bash

答案2

由于您实际上是在尝试查找变量中的单词数,因此可以使用wc -w命令来实现:

$ var_names='test1 tutorial2 test3w'                                                                                     

$ wc -w <<< "$var_names" 
3

相关内容