Durante il tentativo di ottenere l'ultimo parametro posizionale impostato /bin/dash, ho provato echo ${$#}. Sorprendentemente questo non ha provocato un errore, ma in PID che è lo stesso dei $$contenuti variabili. Domanda, perché la sintassi ha funzionato? Qual è la regola di sintassi applicata dalla shell qui?
Fondamentalmente, quello che ho fatto è
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
Apparentemente, %anche il personaggio viene ignorato in tale costrutto
$ echo ${$%}
13819
Ma *e @causare l'errore di sostituzione Bad:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#e %e quali risultati di comportamento da quelli.
evalad es dash -c 'set 1 2 3 4 5; eval "echo \$$#"'. Fonte: Ubuntu Wiki
for i; do true; donedi inserire l'ultimo oggetto $i) ma stavo cercando qualcosa di più elegante. evalovviamente possono avere potenziali problemi, pensato fino a che punto - questo è un altro argomento. Ma sì, è un'opzione
${$*}e${$@}produci?