Пытаясь получить последний набор позиционных параметров /bin/dash
, я пытался echo ${$#}
. Удивительно, но это привело не к ошибке, а к PID, который совпадает с $$
содержимым переменной. Вопрос, почему этот синтаксис работает? Какое синтаксическое правило применяется к этой оболочке?
В основном то, что я сделал, это
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
Видимо, %
персонаж также игнорируется в такой конструкции
$ echo ${$%}
13819
Но *
и @
привести к ошибочной замене:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#
и %
и какие результаты поведения от тех.
eval
, например dash -c 'set 1 2 3 4 5; eval "echo \$$#"'
. Источник: Ubuntu Wiki
for i; do true; done
как получить последний элемент $i
), но искал что-то более элегантное. eval
Конечно, могут возникнуть потенциальные проблемы, подумайте, в какой степени - это другая тема. Но да, это вариант
${$*}
и${$@}
производите?