假设我在 bash 中有两个数组(或一个或多个数组!),如下所示
a=(1 0 1)
b=(0,1,1)
我如何将它们组合成:
c=(1 1 2)
每个元素加在一起得到 c 吗?
答案1
首先,数组定义不在bash
数组,
元素之间,它们只是简单地定义为
a=(1 0 1)
b=(0 1 1)
要生成具有相同索引中的元素之和的新数组,请迭代任一数组索引(假设两种情况下的数组长度相同)
for idx in "${!a[@]}"; do
c[idx]=$(( a[idx] + b[idx] ))
done
除了使用 迭代索引之外${!a[@]}
,还可以使用传统的 C 风格 for 循环迭代到数组长度
for (( idx=0; idx < ${#a[@]}; idx++ )); do
最后,要在新数组中打印结果,您可以执行类似的操作
printf '%s\n' "${c[@]}"
答案2
尝试这个,
a=(1,0,1)
b=(0,1,1)
a1=(`echo $a | tr ',' ' '`)
b1=(`echo $b | tr ',' ' '`)
for i in `seq 0 1 ${#a1[@]}`
do
c1[$i]=`expr ${a1[$i]} + ${b1[$i]}`
done
c=(`echo ${c1[@]} | tr ' ' ','`)