数组索引在0
中基于bash
,在1
中基于zsh
(除非设置了选项KSH_ARRAYS
)。
作为一个例子:要访问数组的第一个元素,有没有比以下更好的东西:
if [ -n $BASH_VERSION ]; then
echo ${array[0]}
else
echo ${array[1]}
fi
答案 0 :(得分:1)
要始终获得一致的行为,请使用:
${array[@]:offset:length}
对于同时适用于bash
和zsh
的代码,您需要使用offset:length
语法而不是[subscript]
语法。
即使对于仅zsh
的代码,您仍然需要这样做(或使用emulate -LR zsh
),因为zsh
的数组下标基础由{{3}确定}。
例如,引用数组中的第一个元素:
${array[@]:0:1}
这里,array[@]
是所有元素,0
是偏移量(始终始终从0开始),1
是元素数希望的。