$ {##}在bash中是什么意思?

Hol*_*ock 5 bash

我知道$#中的位置参数数量bash。但是如何bash解释${##}呢?这是我系统的输出示例。

$ echo $#
0
$ echo ${#}
0
$ echo ${##}
1
$ echo $##
0#
Run Code Online (Sandbox Code Playgroud)

ogu*_*ail 10

$#是位置参数的数量,并且${##}$#的值的长度(以字符为单位)。$##不起作用,因为它不符合参数扩展语法。

例子:

$ bash -c 'echo "$# ${##}"' _ {1..9}
9 1
$ bash -c 'echo "$# ${##}"' _ {1..10}
10 2
$ bash -c 'echo "$# ${##}"' _ {1..100}
100 3
Run Code Online (Sandbox Code Playgroud)

参见Bash参考手册§3.5.3 Shell参数扩展

  • @ Holmes.Sherlock:`_`作为$ 0传递给bash。尝试以下命令:`bash -c'echo参数数量:$ {#}的对数:$ {##}'abcdefghijklmno`。它将输出14个参数(从_b_到_o_),并且14的base-10-对数(四舍五入)为2,因为`14`有两个有效数字。 (2认同)