$1
é o primeiro argumento.
$@
são todos eles.
Como posso encontrar o último argumento passado para um script de shell?
${!#}
. Teste usando bash -c 'echo ${!#}' arg1 arg2 arg3
. Para bash , ksh e zsh , a resposta de Dennis Williamson propõe ${@: -1}
. Além disso, ${*: -1}
também pode ser usado. Teste usando zsh -c 'echo ${*: -1}' arg1 arg2 arg3
. Mas isso não funciona para o dash , csh e tcsh .
${!#}
, ao contrário ${@: -1}
, também funciona com a expansão de parâmetros. Você pode testá-lo com bash -c 'echo ${!#%.*}' arg1.out arg2.out arg3.out
.