假設我有兩個列表:慶典獲取列表的長度時,列表名稱不固定
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