假设我有两个列表:庆典获取列表的长度时,列表名称不固定
lista="a b c d"
listb="e f"
我想编写一个返回的项目给定的名单上的一个功能:
>>foo $lista
4
>>foo $listb
2
我试过使用${#<varname>[@]}
语法,也是,失败。
谢谢
假设我有两个列表:庆典获取列表的长度时,列表名称不固定
lista="a b c d"
listb="e f"
我想编写一个返回的项目给定的名单上的一个功能:
>>foo $lista
4
>>foo $listb
2
我试过使用${#<varname>[@]}
语法,也是,失败。
谢谢
把它们放到BASH数组中,看看数组的长度。
a=($lista)
echo ${#a[@]}
4
a=($listb)
echo ${#a[@]}
2
@OmerDagan:这个答案是否适合你? – anubhava
您可以使用wc -w
此:
$ lista="a b c d"
$ wc -w <<< "$lista"
4
$ listb="e f"
$ wc -w <<< "$listb"
2
从man wc
:
-w,--words
打印字计数
为了使其功能,用途:
list_length() {
echo $(wc -w <<< "[email protected]")
}
然后你可以这样调用它:
list_length "a b c"
如果你确实想编写一个函数,你可以利用正常的优势参数解析和$#
包含传递的参数数量的事实:
foo() { echo $#; }
你的问题解决了吗? – fedorqui
我试着删除这个问题,因为它不准确,但我无法做到,因为它已经有了答案。所以不... –
哦,我明白了。我们回答得太快,因为我们得到了一些upvotes这个问题不能被删除... – fedorqui