我们都知道在Bash中数组从0开始索引,在zsh中则从1开始索引。如果我无法确保运行环境是bash、zsh或其他环境,脚本如何知道应该使用0还是1?
期望的代码示例:
期望的代码示例:
#!/bin/sh
detect_array_start_index(){
# ... how?
echo 1
}
ARR=(ele1 ele2)
startIndex=$(detect_array_start_index) # 0 or 1
for (( i=${startIndex}; i < ${#ARR[@]} + $startIndex; i++ )); do
echo "$i is ${ARR[$i]}"
done
我有一个想法,就是找到固定数组中第一个值的索引,我找到了这个链接:获取Bash数组中值的索引,但是被接受的答案使用bash变量间接语法${!VAR[@]}
,在zsh中无效。
bash
和zsh
下都能运行。 - chepner