Для ksh, zsh и bash:
$ set -- The quick brown fox jumps over the lazy dog
$ echo "${@:~0}"
dog
А для "рядом с последним":
$ echo "${@:~1:1}"
lazy
Чтобы обойти любые проблемы с аргументами, начинающимися с тире (например, -n
), используйте:
$ printf '%s\n' "${@:~0}"
dog
И правильный способ обработки пробелов и символов глобуса в sh
:
$ set -- The quick brown fox jumps over the lazy dog "the * last argument"
$ eval echo "\"\${$#}\""
The last * argument
Или, если вы хотите установить last
var:
$ eval last=\${$#}; echo "$last"
The last * argument
А для «рядом с последним»:
$ eval echo "\"\${$(($#-1))}\""
dog