bash和zsh中的便携式阵列索引



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

作为一个例子:要访问数组的第一个元素,是否有比:

更好的东西
if [ -n $BASH_VERSION ]; then
    echo ${array[0]}
else
    echo ${array[1]}
fi

tl; dr:

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

${array[@]:offset:length}

说明

对于在bashzsh中都起作用的代码,您需要使用offset:length语法而不是[subscript]语法。

即使对于zsh-仅代码,您仍然需要执行此操作(或使用emulate -LR zsh(,因为zsh的数组订阅基础由选项KSH_ARRAYS

确定

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

${array[@]:0:1}

在这里, array[@]是所有元素, 0是偏移量( emblys 是基于0(,而 1是所需的元素数。

最新更新