我无法在google上找到这个问题的简单答案,也不会在stackoverflow上找到答案。
基本上我有两个阵列需要并排打印到终端,因为一个数组是术语列表,另一个是术语定义。有谁知道这样做的好方法?
提前致谢。
答案 0 :(得分:8)
这是一个“单行”:
paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")
这将创建由一个术语和一个由制表符分隔的def组成的行,严格来说,这可能不是“并排”(因为它们实际上不在列中)。如果你知道第一列应该有多宽,你可以使用类似的东西:
paste -d' ' <(printf "%-12.12s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")
将术语精确填充或截断为12个字符,然后在两列之间放置一个空格而不是标签(-d' '
)。
答案 1 :(得分:7)
假设两个数组的长度相同,您可以使用C风格的for循环来实现此目的:
for ((i=0; i<=${#arr1[@]}; i++)); do
printf '%s %s\n' "${arr1[i]}" "${arr2[i]}"
done