Ao tentar obter o último parâmetro posicional definido /bin/dash, tentei echo ${$#}. Surpreendentemente, isso não resultou em um erro, mas no PID, que é o mesmo que o $$conteúdo da variável. Pergunta, é por que essa sintaxe funcionou? Qual é a regra de sintaxe que o shell aplicou aqui?
Basicamente, o que eu fiz é
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
Aparentemente, o %personagem também é ignorado nesse construto
$ echo ${$%}
13819
Mas *e @resultar em erro de substituição incorreto:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#e %e qual comportamento resultados daqueles.
eval, por exemplo dash -c 'set 1 2 3 4 5; eval "echo \$$#"'. Fonte: Ubuntu Wiki
for i; do true; doneque era o último item $i), mas estava procurando algo mais elegante. evalé claro que pode haver problemas em potencial, pensados até que ponto - esse é outro tópico. Mas sim, é uma opção
${$*}e${$@}produzir?