array
Alternatif tertua di bash (Sejak bash 3.0+) adalah:
$ a=(aa bb cc dd ee)
$ echo "${a[@]:(-1)} ${a[@]: -1} ${a[@]:(~0)} ${a[@]:~0}"
ee ee ee ee
Ruang diperlukan untuk menghindari interpretasi :
diikuti oleh minus -
sebagai perluasan dari "${var:-abc}"
(Gunakan Nilai Default).
Ini ~
adalah negasi bitwise aritmatika (setara dengan komplemen seseorang atau membalikkan semua bit ). Dari man bash:
EVALUASI ARITHMETIK
! ~ logical and bitwise negation
Sejak bash-4.2 + juga:
$ echo "${a[-1]} ${a[(~0)]}"
ee ee
Sejak bash 5.0+ juga:
$ echo "${a[~0]}"
ee
Untuk semua versi bash (versi lama):
$ echo "${a[ ${#a[@]}-1 ]}" # spaces added **only** for readability
ee
@
Untuk argumen posisional (sejak bash 2.01):
$ set aa bb cc dd ee
$ echo "${@:(-1)} ${@:~0} ${@: -1} ${@:$#} ${!#}"
ee ee ee ee
Solusi portabel untuk semua cangkang adalah menggunakan eval:
eval printf '"%s\n"' \"\${$#}\"
$@
bukan array yang tepat (tidak dapat disalin). Untuk itu, lihat Mendapatkan argumen terakhir yang diteruskan ke skrip shell .