如何使用 printf 打印反斜杠后跟换行符?

Jon*_*bæk 4 python bash c

使用Python,我得到

$ python3 -c 'print("\\\n")'
\

$ 
Run Code Online (Sandbox Code Playgroud)

也就是说,一个反斜杠和一个换行符,后跟解释器插入的额外换行符。

使用C,编译代码

#include <stdio.h>

int main(void)
{
    printf("\\\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

进入文件backslash.out产生

$ ./backslash.out 
\
$ 
Run Code Online (Sandbox Code Playgroud)

即,一个反斜杠和一个换行符。

在 bash 中,我得到

$ STRING="\\\n"
$ printf "${STRING}"
\n$ 
Run Code Online (Sandbox Code Playgroud)

bash printf 命令到底在做什么?对于转义字符,它与 pythonprint或 C命令有何不同?我需要在变量中放入什么才能在终端上获得以下输出:printf\STRING

$ printf "${STRING}"
\
$ 
Run Code Online (Sandbox Code Playgroud)

Byt*_*der 5

在下面的代码片段中,您在反斜杠转义周围使用“双引号”:

$ STRING="\\\n"
$ printf "${STRING}"
\n$ 
Run Code Online (Sandbox Code Playgroud)

但是,Bash 仍然会计算双引号内的一些反斜杠转义符,因此之后变量的内容实际上是\\n,因为"\\"计算结果为\

将字符串放在“单引号”中以防止 shell 接触任何反斜杠:

$ STRING='\\\n'
$ printf "$STRING"
\
$ 
Run Code Online (Sandbox Code Playgroud)