有没有好的方法来编写一个与 bash 和 zsh 兼容的 shell 脚本来处理数组元素?

有没有好的方法来编写一个与 bash 和 zsh 兼容的 shell 脚本来处理数组元素?

bash 的索引为 0,而 zsh 的索引为 1,这可能会导致问题。例如,下面的代码在 bash 中可以正常工作,但在 zsh 中不行(PS:我知道我不需要为此使用数组,这只是一个例子):

DISK1=Samsung_SSD_850_EVO_120GB_S21SNX0H915161E
DISK2=Samsung_SSD_850_EVO_120GB_S21SNX0H915160K

DISKS=( $DISK1 $DISK2 )

mdadm --create /dev/md0 --level=mirror --raid-devices=2 "${DISKS[0]}" "${DISKS[1]}"

我在想,如果有办法将当前 shell 的索引作为变量获取,我可以通过将所有东西都写入与当前 shell 的索引相关的内容来使这个 shell 不可知,如下所示:

INDEX=$(some_function_that_returns_index)
DISK1=Samsung_SSD_850_EVO_120GB_S21SNX0H915161E
DISK2=Samsung_SSD_850_EVO_120GB_S21SNX0H915160K

DISKS=( $DISK1 $DISK2 )

echo "${DISKS[$INDEX]}" "${DISKS[$(expr $INDEX + 1)]}"



mdadm --create /dev/md0 --level=mirror --raid-devices=2 "${DISKS[$INDEX]}" "${DISKS[$(expr $INDEX + 1)]}"

有没有办法获取当前 shell 的索引,或者获取第 n 个数组元素?理想情况下,只使用单个 shell 命令,而不是自定义小脚本。

相关内容