सरणी
सबसे पुराना विकल्प (bash 3.0+ के बाद से) bash में हैं:
$ a=(aa bb cc dd ee)
$ echo "${a[@]:(-1)} ${a[@]: -1} ${a[@]:(~0)} ${a[@]:~0}"
ee ee ee ee
विस्तार (डिफ़ॉल्ट मानों का उपयोग करें) के रूप में :
माइनस के बाद की व्याख्या से बचने के लिए स्थान आवश्यक है ।-
"${var:-abc}"
~
अंकगणितीय है बिटवाइज़ निषेध (एक पूरक के बराबर या सभी बिट्स फ्लिप )। आदमी से मार:
आर्कटिक मूल्यांकन
! ~ logical and bitwise negation
चूँकि bash-4.2 + भी:
$ echo "${a[-1]} ${a[(~0)]}"
ee ee
5.0+ के बाद से भी बैश करें:
$ echo "${a[~0]}"
ee
सभी बैश संस्करणों (पुराने बैश) के लिए:
$ echo "${a[ ${#a[@]}-1 ]}" # spaces added **only** for readability
ee
@
स्थिति संबंधी तर्कों के लिए (२.०१ के बाद से):
$ set aa bb cc dd ee
$ echo "${@:(-1)} ${@:~0} ${@: -1} ${@:$#} ${!#}"
ee ee ee ee
सभी गोले का एक पोर्टेबल समाधान eval का उपयोग करना है:
eval printf '"%s\n"' \"\${$#}\"
$@
वास्तव में एक सरणी नहीं है (सबस्क्रिप्ट नहीं की जा सकती)। इसके लिए, शेल स्क्रिप्ट को अंतिम तर्क प्राप्त करना देखें ।