这是我的数组A => [索引]值:
[0] 0
[1] 0
[2] 0
[3] 1
[4] 0
[5] 100
[6] 0
这是我的数组B => [索引]值:
[0] 0
[1] 1
[2] 12
[3] 430
[4] 0
[5] 0
[6] 0
目的是将第一个数组和第二个数组合并为第三个数组,以便显示:
因此我的数组C的行为将是这样=> [索引]值:
[1] 0 1
[2] 0 12
[3] 1 430
[5] 100 0
如何合并并打印此结果? 预先感谢。
答案 0 :(得分:2)
假设数组的长度相等。
a=(0 0 0 1 0 100 0); b=(0 1 12 430 0 0 0)
c=(); for k in "${!a[@]}";
do if [[ "${a[k]}" -ne 0 ]] || [[ "${b[k]}" -ne 0 ]];
then c[k]="${a[k]} ${b[k]}"; fi;
done
for k in "${!c[@]}"; do echo "$k: ${c[$k]}"; done
将打印
1: 0 1
2: 0 12
3: 1 430
5: 100 0
答案 1 :(得分:0)
如果我们假设它们的长度相同-
for (( ndx=0; ndx < "${#a[@]}"; ndx++ ))
do if (( a[ndx] || b[ndx] ))
then c[ndx]="${a[ndx]} ${b[ndx]}"
echo "$ndx: ${c[ndx]}"
fi
done
如果您不知道它们是否相同或更长-
for (( ndx=0;
ndx < ( ${#a[@]} > ${#b[@]} ? ${#a[@]} : ${#b[@]}) ;
ndx++ ));
do if (( a[ndx] || b[ndx] ))
then c[ndx]="${a[ndx]} ${b[ndx]}"
echo "$ndx: ${c[ndx]}"
fi
done
这会将数组长度与三元运算符进行比较,并选择较长的那个。