$1
Es el primer argumento.
$@
es todos ellos
¿Cómo puedo encontrar el último argumento pasado a un script de shell?
${!#}
. Pruébalo usando bash -c 'echo ${!#}' arg1 arg2 arg3
. Para bash , ksh y zsh , la respuesta de Dennis Williamson propone ${@: -1}
. Además ${*: -1}
también se puede utilizar. Pruébalo usando zsh -c 'echo ${*: -1}' arg1 arg2 arg3
. Pero eso no funciona para dash , csh y tcsh .
${!#}
, a diferencia ${@: -1}
, también funciona con la expansión de parámetros. Puedes probarlo con bash -c 'echo ${!#%.*}' arg1.out arg2.out arg3.out
.