我有一个for循环,它迭代一个项目列表,收集统计信息。然后使用mail命令将构造的字符串作为电子邮件正文发送。我的问题是:输出换行符的正确方法是什么,而不是像我的脚本当前那样转义\ n字符?
这是相关的bash代码:
for x in $([..]); do
BODY="${BODY}\nReport for ${x}: \nSuccess: `get_logs $x 1`\nAttempts: `get_logs $x`"
done;
答案 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标志启用反斜杠转义的解释