假设我有两个列表:
lista="a b c d"
listb="e f"
Run Code Online (Sandbox Code Playgroud)
我想编写一个函数来返回给定列表中的项数:
>>foo $lista
4
>>foo $listb
2
Run Code Online (Sandbox Code Playgroud)
我尝试过使用${#<varname>[@]}语法,但也${#!<varname>[@]}没有成功.
谢谢
fed*_*qui 11
你可以使用wc -w这个:
$ lista="a b c d"
$ wc -w <<< "$lista"
4
$ listb="e f"
$ wc -w <<< "$listb"
2
Run Code Online (Sandbox Code Playgroud)
来自man wc:
-w, - words
打印单词计数
要使其正常运行,请使用:
list_length () {
echo $(wc -w <<< "$@")
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样称呼:
list_length "a b c"
Run Code Online (Sandbox Code Playgroud)
将它们放入BASH数组并查看数组长度.
a=($lista)
echo ${#a[@]}
4
a=($listb)
echo ${#a[@]}
2
Run Code Online (Sandbox Code Playgroud)