Al intentar obtener el último parámetro posicional establecido /bin/dash
, lo intenté echo ${$#}
. Sorprendentemente, esto no resultó en un error, sino en PID, que es lo mismo que el $$
contenido variable. Pregunta, ¿por qué funcionó esa sintaxis? ¿Cuál es la regla de sintaxis que Shell aplicó aquí?
Básicamente, lo que hice es
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
Aparentemente, el %
personaje también se ignora en tal construcción
$ echo ${$%}
13819
Pero *
y el @
resultado es un error de sustitución incorrecto:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#
y %
y qué resultados de comportamiento de aquellos.
eval
, por ejemplo dash -c 'set 1 2 3 4 5; eval "echo \$$#"'
. Fuente: Ubuntu Wiki
for i; do true; done
obtener el último elemento $i
) pero estaba buscando algo más elegante. eval
por supuesto, puede tener problemas potenciales, en qué medida, ese es otro tema. Pero sí, es una opción
${$*}
y${$@}
produce?