Bash - 如何使用命令替换在循环中添加换行符?

时间:2017-04-12 16:58:52

标签: bash

我有一个for循环,它迭代一个项目列表,收集统计信息。然后使用mail命令将构造的字符串作为电子邮件正文发送。我的问题是:输出换行符的正确方法是什么,而不是像我的脚本当前那样转义\ n字符?

这是相关的bash代码:

for x in $([..]); do
    BODY="${BODY}\nReport for ${x}: \nSuccess: `get_logs $x 1`\nAttempts: `get_logs $x`"
done;

2 个答案:

答案 0 :(得分:0)

你可以在引用字符串中使用换行符,唯一的缺点就是你不能缩进新行,因为缩进将是字符串的一部分。

for x in $([..]); do
    BODY="${BODY}
Report for ${x}: 
Success: $(get_logs $x 1)
Attempts: $(get_logs $x)"
done;

或者,分别附加每一行以使代码更具可读性。

for x in $([..]); do
    BODY+="Report for ${x}:"$'\n'
    BODY+="Success: $(get_logs $x 1)"$'\n'
    BODY+="Attempts: $(get_logs $x)"$'\n'
done;

$'\n'是ANSI C字符串,将替换为换行符。

答案 1 :(得分:0)

正如我在评论中所说,你可以使用:

echo -e

-e标志启用反斜杠转义的解释