bash - 使用换行符连接多个行变量
问题描述
我有两个变量var1
,var2
可能是多行,也可能是完全空的。例如,任何一个都可能看起来像:
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}"
但这似乎不起作用。任何提示将不胜感激。
解决方案
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 。var1
var2
var1
var2
推荐阅读
- python - 将标签添加到 Tkinter 按钮
- c# - 无法让线程和动画旋转工作
- python - Spark + Kafka中生成数据的生产者和消费者代码错误
- sql - 如何在雪花中将日期时间更改为 INT?
- c# - 列表的 C# ASP.NET MVC 模型绑定
- python - 为什么我的登录端点在匹配密码时会在我的生产环境中返回 TypeError?
- escaping - 使用 bazel 构建 Envoy 时,genrule cmd 会导致“Missing Terminating '”' 字符
- reactjs - Material UI Grid:扩展网格样式
- postgresql - 无法从 myBinder 连接到托管在 Azure 上的 ubuntu VM 上的 postgres
- c - 为什么http post响应在响应末尾添加随机字符