我试图将两个数组合并为一个像拉链一样的时尚.我很难做到这一点.
array1=(one three five seven)
array2=(two four six eight)
Run Code Online (Sandbox Code Playgroud)
我尝试过使用嵌套的for循环,但无法弄明白.我不希望输出为13572468但是12345678.
我正在处理的实际脚本在这里(http://ix.io/iZR)..但它显然没有按预期工作.我要么打印整个array2(例如124683),要么就像第一个索引一样,如果循环不起作用(例如12325272).
那么如何获得输出:
one two three four five six seven eight
Run Code Online (Sandbox Code Playgroud)
上面两个数组?
编辑:我能用两个for循环和paste
(http://ix.io/iZU)解决它.看看有人有更好的解决方案仍然会很有趣.所以,如果你有时间,请看看.
小智 7
假设两个阵列大小相同,
unset result
for (( i=0; i<${#array1[*]}; ++i)); do result+=( ${array1[$i]} ${array2[$i]} ); done
Run Code Online (Sandbox Code Playgroud)
我发现更常见的情况是我想将两个数组压缩成两列。这不像“RTLinuxSW”答案那样原生 Zsh,但对于这种情况,我使用粘贴。
% tabs 16
% paste <(print -l $array1) <(print -l $array2)
one two
three four
five six
seven eight
Run Code Online (Sandbox Code Playgroud)
然后可以将其推入另一个数组以获得预期的输出:
% array3=( `!!`«tab»«tab» )
% print $array3
one two three four five six seven eight
Run Code Online (Sandbox Code Playgroud)