我正在尝试理解一个bash脚本,但是我对以下这行代码感到困惑:
result=${!#}
我在这里找到了解决方案的一部分(
!
在${}
中):这里:
另一个解决方案的一部分(如果参数的第一个字符是感叹号(!),则引入变量间接级别。Bash使用从参数余下的部分形成的变量的值作为变量的名称;然后展开该变量,并在替换的其余部分中使用该值,而不是使用参数本身的值。这称为间接扩展。
#
在${}
中)在这里:
但我不知道这两个如何组合成被替换的是参数扩展值的字符数。如果参数是“”或“@”,则替换的值是位置参数的数量。如果参数是由“”或“@”索引的数组名称,则替换的值是数组中元素的数量。如果参数是由负数索引的索引数组名称,则该数字被解释为相对于参数的最大索引加1,因此负索引从数组末尾开始计数,索引为-1表示最后一个元素。
result
。这行代码是干什么用的?
set -- a b c
搞糊涂的人,你可以只使用set a b c
(即不带“--”)来获得相同数量的参数。 - Kiteloopdesign