BASH:试图在不引入空格的情况下在另一行上继续一个字符串[重复]

Posted

技术标签:

【中文标题】BASH:试图在不引入空格的情况下在另一行上继续一个字符串[重复]【英文标题】:BASH: Trying to continue a string on another line without introducing white space [duplicate] 【发布时间】:2018-11-27 20:59:05 【问题描述】:

我有一个条件与此类似的 BASH 脚本:

dirImg="/var/log/junk"
sizeLimitMsg="1 gig"

if [ 0 == "$fileSize1" ];then
    echo "All directories under $dirImg are within the allowed\
    $sizeLimitMsg size limit" >> $emailBody
else
    #do something else
fi

它产生带有额外空白的输出:

All directories under /var/log/junk are within the allowed   1 gig size limit

我猜测额外的和不需要的空白来自于在上面的条件中缩进变量 $sizeLimitMsg。

我是否可以继续该行并缩进该代码而不会获得额外和不需要的空白?

【问题讨论】:

去掉引号。 【参考方案1】:

不要在引号中包含缩进:

echo "All directories under $dirImg are within the allowed" \
     "$sizeLimitMsg size limit"

【讨论】:

【参考方案2】:

替代方案:

printf "%s %s\n" "All directories under $dirImg are within the allowed" \
    "$sizeLimitMsg size limit" >> "$emailBody"

【讨论】:

或者 printf 'All directories under %s are within the %i size limit\n' "$dirImg" "$sizeLimitMsg" 如果你愿意,可以在格式字符串后面加上一个转义的换行符。 @tripleee 我同意这是一种更好的格式。试图捍卫我更糟糕的格式:恐怕 OP 会尝试在格式字符串中添加随机文本并将消息更改为 printf "All directories under %s are safe under the %s % limit\n" "$dirImg" "$percUsageAllowed" 而不会转义 %

以上是关于BASH:试图在不引入空格的情况下在另一行上继续一个字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不引入意外空格的情况下在多行上编写 f 字符串? [复制]

在不知道进程启动顺序的情况下在另一个进程上触发事件

如何在不使用全局变量的情况下在 bash 中返回一个数组?

如何在不使用 &nbsp 的情况下在行内元素之间添加空格 [重复]

如何在不选择文本的情况下在 Xcode 中剪切一行?

如何在不使用“|”的情况下在一行中连接两个集合