TL; DR:
Чтобы всегда получить согласованное поведение, используйте:
${array[@]:offset:length}
Объяснение
Для кода, который работает как bash
, так и zsh
, вам нужно использовать синтаксис offset:length
вместо синтаксиса [subscript]
.
Даже для zsh
-одного кода вам все равно нужно будет это сделать (или использовать emulate -LR zsh
), поскольку основа подписки массива zsh
определяется параметром KSH_ARRAYS
.
Например, для ссылки на первый элемент в массиве:
${array[@]:0:1}
Здесь array[@]
- все элементы, 0
- смещение (которое всегда основано на 0), а 1
- количество требуемых элементов.