在Bash中合并两个数组
发布时间:2020-12-15 19:00:31 所属栏目:安全 来源:网络整理
导读:我有以下情况,两个数组,让我们称它们为A(0 1)和B(1 2),我需要将它们组合成一个新的数组C(0:1 0:2 1:1 1:2),我想出的最新一点是这个循环: for ((z = 0; z = ${#A[@]}; z++)); do for ((y = 0; y = ${#B[@]}; y++)); do C[$y + $z]="${A[$z]}:" C[$y + $z
我有以下情况,两个数组,让我们称它们为A(0 1)和B(1 2),我需要将它们组合成一个新的数组C(0:1 0:2 1:1 1:2),我想出的最新一点是这个循环:
for ((z = 0; z <= ${#A[@]}; z++)); do for ((y = 0; y <= ${#B[@]}; y++)); do C[$y + $z]="${A[$z]}:" C[$y + $z + 1]="${B[$y]}" done done 但它不能很好地工作,因为输出我得到这个: 0: : : : 在这种情况下,输出应为0:1 0:2,因为A =(0)且B =(1 2)
由于Bash支持稀疏数组,因此迭代数组比使用基于大小的索引更好.
a=(0 1); b=(2 3) i=0 for z in ${a[@]} do for y in ${b[@]} do c[i++]="$z:$y" done done declare -p c # dump the array 输出: declare -a c='([0]="0:2" [1]="0:3" [2]="1:2" [3]="1:3")' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |