gpt4 book ai didi

bash - 使用换行符连接多个行变量

转载 作者:行者123 更新时间:2023-12-02 09:03:22 24 4
gpt4 key购买 nike

我有两个变量 var1var2,它们可以是多行,也可以完全为空。例如,任一可能如下所示:

line/1
line/2


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


line/1

反之亦然。

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

此外,对于最后一种情况,两者都不为空,我如何连接这两个?我已经尝试过

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

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

最佳答案

使用bash,您可以使用此函数来完成此工作:

concat() {
printf '%s' "${1:+$1$'\n'}" "${2:+$2$'\n'}";
}

仅当 时,使用 "${1:+$1$'\n'}" 才会将 \n 附加到 $1 $1 为空/未设置。

根据man bash:

${参数:+单词} 使用替代值。如果参数为空或未设置,则不替换任何内容,否则替换单词的扩展。

示例:

concat 'line1' 'line2'

line1
line2

concat 'line1' ''

line1

concat '' 'line2'

line2

concat '' ''

concat 'line1
line2
line3' ''

line1
line2
line3

关于bash - 使用换行符连接多个行变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61316096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com