【问题标题】:Appending characters from two variables in bash在bash中附加两个变量的字符
【发布时间】:2018-08-23 06:55:16
【问题描述】:

您好,我将输出存储在两个变量中。比方说:

echo "$varA"

Cow
Dog
Horse

echo "$varB"

1
2
3

我需要像 var3 这样的输出

Cow:::1
Dog:::2
Horse:::3

如何使用循环来做到这一点?如果我使用两个循环,那么内部循环将为牛、狗和马(每个)运行三次。在执行 1 次后我找不到退出内部循环的方法,并且这里没有 goto 语句。

还有其他建议吗?

谢谢。

【问题讨论】:

    标签: bash loops


    【解决方案1】:

    数组(请参阅@oguzismail 的答案)是更好的方法,但如果您确实需要在字符串变量中使用行(可能是换行分隔),您可以使用lam(层压)命令:

    var3=$(lam <(echo "$varA") -s ":::" <(echo "$varB"))
    

    请注意,这使用进程替换(&lt;( ) 位)将两个输入变量作为输入通过文件名提供给 lam。这是一个仅限 bash 的功能,因此您只能在 bash shell 中使用它。如果它在脚本中,请使用明确的 bash shebang 行(#!/bin/bash#!/usr/bin/env bash)或使用 bash scriptname 运行它(不是 sh scriptname)。

    【讨论】:

      【解决方案2】:

      为什么不将这些“输出”保存在数组中?喜欢

      varA=(Cow Dog Horse)
      varB=(1 2 3)
      

      然后你可以像这样用一个循环准备var3

      for i in "${!varA[@]}"; do
          var3[i]="${varA[i]}:::${varB[i]}"
      done
      

      您可以阅读 bash 手册中的数组和循环部分以获取更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-15
        • 2015-05-03
        • 2018-09-13
        • 2015-05-22
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多