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 命令,而不是自定义小脚本。