我对在 bash 中打印包含换行符的变量有点困惑。
var="Age:\n20\ncolor:\nred"
echo -e $var
Age:
20
color:
red
这是可行的,但是很多人说带有选项的 echo不可移植,最好使用 printf。
我从来没有用过prinf。根据手册发出 echo 命令:
printf '%s\n' "$var"
Age:\n20\ncoloe:\nred
但这不会解析 \n 内部变量。手册通常有这个例子:
printf "Surname: %s\nName: %s\n" "$SURNAME" "$LASTNAME"
但这不是我的情况,从我的角度来看,它使用起来不舒服。我只需键入即可发现我可以使用它:
printf "$var\n"
它是便携式的吗?如果我然后将 $var 传递给邮件命令,它会保存新的换行符吗?
printf "$var\n" | mail -s subj email@domain.com