-2
x=('hello world' "HELLO")
寻找其示出了在bash阵列
两个${#x[*]}
和${#x[@]}
打印相同的输出之间@和*的差的例子。
我明白[email protected]
和$*
之间的区别,但我有兴趣查看没有命令行参数的区别。
x=('hello world' "HELLO")
寻找其示出了在bash阵列
两个${#x[*]}
和${#x[@]}
打印相同的输出之间@和*的差的例子。
我明白[email protected]
和$*
之间的区别,但我有兴趣查看没有命令行参数的区别。
除非您有理由使用*,否则请务必使用@扩展。 @被添加来解决问题。
这两个并不总是展开同样的。涉及*的麻烦以空格和其他shell元字符开头(特别是引号,但是$和更多)。
*使元字符保持打开状态,以便shell再次处理它们,如果你不想让它们进入数组,那通常是不好的。 @通过展开每个数组元素来保护它们,就像它是一个单独引用的值一样,从而保持所有元字符不变。
'$ {#...}'不会对数组内容进行进一步的shell扩展,所以这两个表达式* *是相同的。 – chepner