首页 > 解决方案 > 使用换行符连接多个行变量

问题描述

我有两个变量var1var2可能是多行,也可能是完全空的。例如,任何一个都可能看起来像:

line/1
line/2

或者


我想将它们连接起来,以便将 var1 按原样输出,而 var 2 按原样输出,就在 var1 的最后一行下方。有 4 种情况,要么 var1 为空而 var2 不为空,要么 var 2 为空而 var 1 不为空,要么都为空,要么都不为空。如果其中一个变量为空,我不想要任何空格或空行。因此,如果 var 1 为空,我不想要,


line/1

或相反亦然。

除了使用 if、elif、else 块之外,还有什么方法可以做到这一点,或者我必须使用 if else 块。

另外,对于最后一个都不为空的情况,我该如何连接这两个?我努力了

var3="${var1}\n${var2}" 

但这似乎不起作用。任何提示将不胜感激。

标签: bashconcatenation

解决方案


var3="$var1${var1:+${var2:+$'\n'}}$var2"

应该管用。

$ var1=; var2=; var3="${var1}${var1:+${var2:+$'\n'}}${var2}"; echo "$var3"
               # empty line from echo
$ var1=1; var2=; var3="${var1}${var1:+${var2:+$'\n'}}${var2}"; echo "$var3"
1
$ var1=; var2=2; var3="${var1}${var1:+${var2:+$'\n'}}${var2}"; echo "$var3"
2
$ var1=1; var2=2; var3="${var1}${var1:+${var2:+$'\n'}}${var2}"; echo "$var3"
1
2

  • ${var1}- 放 var1
  • ${var1:+- 何时var1设置和
    • ${var2:+- 什么时候var2设置
      • $'\n'- 然后添加一个换行符
    • }
  • }
  • ${var2}- 并添加 var2。

基本上,仅当和都设置${var1:+${var2:+$'\n'}}时才添加换行符,以分隔and 。var1var2var1var2

供参考bash 手动 shell 参数扩展


推荐阅读