-2
x=('hello world' "HELLO")
尋找其示出了在bash陣列
兩個${#x[*]}
和${#x[@]}
打印相同的輸出之間@和*的差的例子。
我明白[email protected]
和$*
之間的區別,但我有興趣查看沒有命令行參數的區別。
x=('hello world' "HELLO")
尋找其示出了在bash陣列
兩個${#x[*]}
和${#x[@]}
打印相同的輸出之間@和*的差的例子。
我明白[email protected]
和$*
之間的區別,但我有興趣查看沒有命令行參數的區別。
除非您有理由使用*,否則請務必使用@擴展。 @被添加來解決問題。
這兩個並不總是展開同樣的。涉及*的麻煩以空格和其他shell元字符開頭(特別是引號,但是$和更多)。
*使元字符保持打開狀態,以便shell再次處理它們,如果你不想讓它們進入數組,那通常是不好的。 @通過展開每個數組元素來保護它們,就像它是一個單獨引用的值一樣,從而保持所有元字符不變。
'$ {#...}'不會對數組內容進行進一步的shell擴展,所以這兩個表達式* *是相同的。 – chepner