$1
это первый аргумент.
$@
это все из них.
Как я могу найти последний аргумент, переданный сценарию оболочки?
${!#}
. Проверьте это с помощью bash -c 'echo ${!#}' arg1 arg2 arg3
. Для Баш , KSH и Zsh , в ответ Деннис Уильямсона предлагает ${@: -1}
. Кроме того, ${*: -1}
также может быть использован. Проверьте это с помощью zsh -c 'echo ${*: -1}' arg1 arg2 arg3
. Но это не работает для dash , csh и tcsh .
${!#}
В отличие ${@: -1}
, также работает с расширением параметра. Вы можете проверить это с bash -c 'echo ${!#%.*}' arg1.out arg2.out arg3.out
.