【发布时间】:2015-10-11 07:23:29
【问题描述】:
直接调用以下命令时,可以正确打印换行符。
printf "abc
def"
但是当用 sudo -s 调用它时,换行符被忽略了。
sudo -s "printf 'abc
def'"
$SHELL 正在使用 bash。
【问题讨论】:
直接调用以下命令时,可以正确打印换行符。
printf "abc
def"
但是当用 sudo -s 调用它时,换行符被忽略了。
sudo -s "printf 'abc
def'"
$SHELL 正在使用 bash。
【问题讨论】:
似乎是sudo 删除换行符。如果您尝试在新的 bash 实例中运行相同的命令,则换行符仍然存在:
bash -c "printf 'abc
def'"
【讨论】:
\n,sudo 将看到两个字符<backslash><n>,然后printf 会将其解释为换行符。但如果你在字符串中加入换行符,sudo 会将其视为换行符,并将其删除。