bash和zsh中的可移植数组索引

时间:2019-05-26 05:16:12

标签: bash zsh

数组索引在0中基于bash,在1中基于zsh(除非设置了选项KSH_ARRAYS)。

作为一个例子:要访问数组的第一个元素,有没有比以下更好的东西:

if [ -n $BASH_VERSION ]; then
    echo ${array[0]}
else
    echo ${array[1]}
fi

1 个答案:

答案 0 :(得分:1)

TL; DR:

要始终获得一致的行为,请使用:

${array[@]:offset:length}

说明

对于同时适用于bashzsh的代码,您需要使用offset:length语法而不是[subscript]语法。

即使对于仅zsh的代码,您仍然需要这样做(或使用emulate -LR zsh),因为zsh的数组下标基础由{{3}确定}。

例如,引用数组中的第一个元素:

${array[@]:0:1}

这里,array[@]是所有元素,0是偏移量(始终始终从0开始),1是元素数希望的。