数组索引基于 0
基于 bash
,而 1
基于 zsh
(除非设置了选项 KSH_ARRAYS
(。
作为一个例子:要访问数组的第一个元素,是否有比:
更好的东西if [ -n $BASH_VERSION ]; then
echo ${array[0]}
else
echo ${array[1]}
fi
tl; dr:
始终获得一致的行为,使用:
${array[@]:offset:length}
说明
对于在bash
和zsh
中都起作用的代码,您需要使用offset:length
语法而不是[subscript]
语法。
即使对于zsh
-仅代码,您仍然需要执行此操作(或使用emulate -LR zsh
(,因为zsh
的数组订阅基础由选项KSH_ARRAYS
。
eg,引用数组中的第一个元素:
${array[@]:0:1}
在这里, array[@]
是所有元素, 0
是偏移量( emblys 是基于0(,而 1
是所需的元素数。