【问题标题】:bash printf two arrays in two columns [duplicate]bash printf两列中的两个数组[重复]
【发布时间】:2016-01-05 00:49:12
【问题描述】:

假设数组 ar1 和 ar2 我希望这两个数组都打印在两列中。

  printf "%s\t%s\n" "${ar1[@]}" "${ar2[@]}"

有什么想法吗?

【问题讨论】:

    标签: arrays bash printf


    【解决方案1】:

    假设数组元素不包含换行符,paste 可以完成这项工作:

    ar1=(1 2 3 4 5 6)
    ar2=(a b c d e f)
    paste <(printf "%s\n" "${ar1[@]}") <(printf "%s\n" "${ar2[@]}")
    1   a
    2   b
    3   c
    4   d
    5   e
    6   f
    

    否则为纯 BASH 循环:

    for ((i=0; i< "${#ar1[@]}"; i++)) do printf "%s\t%s\n" "${ar1[$i]}" "${ar2[$i]}"; done
    1   a
    2   b
    3   c
    4   d
    5   e
    6   f
    

    【讨论】:

    • +1 即将发布相同的内容。请注意,数组元素不得包含换行符......................................
    • 请问,“%s\n”到底在做什么?如果你不包括它,它仍然有效吗?谢谢!
    • 谢谢。顺便说一句,我在 linux 和 mac 中尝试过,但它不起作用,并向我显示以下消息:“pastevariables.sh:2:pastevariables.sh:语法错误:”(“意外”。任何可能的想法正在发生吗?谢谢(我完全复制并粘贴了您的示例,但我将它放在了一个 sh 文件中。第一行 #!/bin/bash,第二行和第三行是数组,第三行是粘贴命令)
    • 没关系。我看到当我用 sh 运行它时不起作用,但如果我运行它“bash script.sh”它可以工作,所以它必须是 shell。
    • 如果第一列中的元素/字符串之间的长度不同,会发生什么情况,两个表格列仍然等距吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2016-02-08
    • 2023-03-29
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多