【问题标题】:How to print two arrays side by side with bash script?如何使用 bash 脚本并排打印两个数组?
【发布时间】:2026-01-16 23:20:02
【问题描述】:

无论是在谷歌上还是在 * 上,我都找不到这个问题的简单好答案。

基本上我有两个数组需要并排打印到终端中,因为一个数组是术语列表,另一个是术语的定义。有谁知道这样做的好方法吗?

提前致谢。

【问题讨论】:

  • 使用关联数组?

标签: arrays bash printing awk echo


【解决方案1】:

这是一个“单行”:

paste <(printf "%s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")

这将创建由一个 term 和一个由 tab 分隔的 def 组成的行,严格来说,这可能不是“并排”的(因为它们实际上并不在列中)。如果您知道第一列应该有多宽,您可以使用以下内容:

paste -d' ' <(printf "%-12.12s\n" "${terms[@]}") <(printf "%s\n" "${defs[@]}")

这会将术语完全填充或截断为 12 个字符,然后在两列之间放置一个空格而不是制表符 (-d' ')。

【讨论】:

【解决方案2】:

假设两个数组的长度相同,您可以使用 C 风格的 for 循环来完成此操作:

for ((i=0; i<=${#arr1[@]}; i++)); do
    printf '%s %s\n' "${arr1[i]}" "${arr2[i]}"
done

【讨论】:

  • 循环遍历数组索引不是更容易吗?喜欢i in "${!arr1[@]}"
  • @oguzismail 是的,它会更好地处理稀疏数组