Bei dem Versuch, den letzten Positionsparameter einzustellen /bin/dash, habe ich es versucht echo ${$#}. Überraschenderweise führte dies nicht zu einem Fehler, sondern zu einer PID, die mit $$variablen Inhalten identisch ist. Frage, warum hat diese Syntax funktioniert? Welche Syntaxregel hat die Shell hier angewendet?
Grundsätzlich habe ich getan
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
Anscheinend wird der %Charakter in einem solchen Konstrukt auch ignoriert
$ echo ${$%}
13819
Aber *und das @führt zu einem schlechten Substitutionsfehler:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#und ausprobiert %und welches Verhalten daraus resultiert.
evalz dash -c 'set 1 2 3 4 5; eval "echo \$$#"'. Quelle: Ubuntu Wiki
for i; do true; doneich das letzte Element bearbeiten musste$i ), habe aber nach etwas Eleganterem gesucht. evalNatürlich kann es potenzielle Probleme geben, inwieweit gedacht - das ist ein anderes Thema. Aber ja, es ist eine Option
${$*}und${$@}produzieren Sie?