在尝试设置最后一个位置参数时/bin/dash
,我已经尝试过了echo ${$#}
。出人意料的是,这不会导致错误,但会导致PID与$$
变量内容相同。问题,为什么该语法起作用?shell在这里应用的语法规则是什么?
基本上,我所做的是
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
显然,%
在这种结构中字符也被忽略
$ echo ${$%}
13819
但是*
并@
导致不良的替换错误:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
@Kusalananda没有期望。我正在尝试其他字符
—
Sergiy Kolodyazhnyy
#
,%
以及这些字符会导致什么行为。
—
wjandrea
@wjandrea是的,已经知道那个了。实际上,已经有一个问题:stackoverflow.com/questions/1853946/… 我试图自己找到一种方法,而没有先阅读问题(而且我已经知道
—
Sergiy Kolodyazhnyy
for i; do true; done
最后一项$i
),但是我正在寻找更优雅的方法。eval
当然,考虑到什么程度也可能存在潜在问题-这是另一个主题。但是是的,这是一个选择
${$*}
并${$@}
产生什么?