我有一个由以下内容组成的数组: -
d23 d3 d21 d1 d20 d0 d26 d6
我想对数组的每两个元素重复相同的操作。例如:
echo d23 d3
然后转到接下来的两个元素:
echo d21 d1
我尝试过while循环的组合并转而使用。任何帮助和建议将不胜感激。
答案 0 :(得分:3)
只需循环播放:
a=(d23 d3 d21 d1 d20 d0 d26 d6)
$ echo ${#a[@]}
8
$ for (( i=0; i<${#a[@]}; i+=2 )); do echo "${a[$i]} ${a[$i+1]}"; done
d23 d3
d21 d1
d20 d0
d26 d6
答案 1 :(得分:2)
如果您已经开始使用shift
注意它只适用于位置参数,那么您可以在函数中使用它:
print_pairs () {
while [ $# -gt 0 ]; do
echo $1 $2;
shift 2;
done
}
a=(d23 d3 d21 d1 d20 d0 d26 d6)
print_pairs "${a[@]}"
答案 2 :(得分:0)
带有递归的ooga's version的变体:
a=(d23 d3 d21 d1 d20 d0 d26 d6)
pp ()
{
[ $# -lt 2 ] && return
echo $1 $2
shift 2
pp $@
}
pp "${a[@]}"