2017-04-12 81 views
0

我有一個for循環,迭代項目列表,收集統計信息。然後使用mail命令將構造的字符串作爲電子郵件的主體發送。我的問題是:正如我的腳本目前正在做的那樣,輸出換行符的正確方法是什麼,而不是逃脫\ n字符?Bash - 如何使用命令替換在循環中添加換行符?

這裏的relavent的bash代碼:

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

您可以嘗試'回聲-e' – 2017-04-12 17:01:27

+0

@ dex'ter添加此作爲答案,因爲它的工作。你和socowi可以爭取upvotes:D –

+0

完成。我已經添加了一個答案 – 2017-04-13 06:14:11

回答

0

正如我在評論中說,你可以使用:

echo -e 

-e標誌使反斜線的解釋逃逸

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字符串和將由換行來替換。