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 字符串? [复制]