【问题标题】:why sudo -s 'printf "xx"' cannot handle newline?为什么 sudo -s 'printf "xx"' 不能处理换行符?
【发布时间】:2015-10-11 07:23:29
【问题描述】:

直接调用以下命令时,可以正确打印换行符。

printf "abc
def"

但是当用 sudo -s 调用它时,换行符被忽略了。

sudo -s "printf 'abc
def'"

$SHELL 正在使用 bash。

【问题讨论】:

    标签: bash shell newline


    【解决方案1】:

    似乎是sudo 删除换行符。如果您尝试在新的 bash 实例中运行相同的命令,则换行符仍然存在:

    bash -c "printf 'abc
    def'"
    

    【讨论】:

    • 是的,但是当你使用“\n”或“\r\n”时,sudo -s 也可以正确打印,按回车和“\n”有什么不同?我虽然在 unix 中按 enter 与 "\n" 相同
    • 如果您使用\n,sudo 将看到两个字符<backslash><n>,然后printf 会将其解释为换行符。但如果你在字符串中加入换行符,sudo 会将其视为换行符,并将其删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2017-01-17
    • 2015-01-05
    • 2012-07-20
    • 2021-11-09
    相关资源
    最近更新 更多