当列表名称未修复时,bash获取列表长度

Ome*_*gan 1 bash

假设我有两个列表:

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)


anu*_*ava 9

将它们放入BASH数组并查看数组长度.

a=($lista)
echo ${#a[@]}
4

a=($listb)
echo ${#a[@]}
2
Run Code Online (Sandbox Code Playgroud)