反斜杠的含义

DUK*_*UKE 4 bash escape-characters

为什么以下命令打印Smith但不打印\Smith

echo \Smith
Run Code Online (Sandbox Code Playgroud)

Mic*_*mer 5

反斜杠在shell语法的转义字符是:

应保留以下字符的字面值,<newline> 除外。... <反斜杠> ... 应删除

So 与 ,\S意思相同S,因为S不是换行符,也不是可以转义的 shell 特殊字符($, ", ', {, [, `, \, |, &, ;, <, >, (, ), ?, *, [, #, ~, =, %, , 或 tab) . 要在给定的参数中包含文字反斜杠,请echo依次使用\或任何其他引用运算符对其进行转义:

echo \\Smith
Run Code Online (Sandbox Code Playgroud)

或者

echo '\Smith'
Run Code Online (Sandbox Code Playgroud)

或者

echo "\Smith"
Run Code Online (Sandbox Code Playgroud)

\仍保留一个特殊的双引号内的意思,但随后当没有S,然后只有当\`$"或换行)。

现在,许多echo实现\在它们的参数中找到时也会进行特殊处理(尽管通常不会在后跟S,尽管没有保证),因此您可能想printf改用:

printf '%s\n' '\Smith'
Run Code Online (Sandbox Code Playgroud)

注意:这是您的示例未引用案例的指定行为,但如果以其他方式引用或read从文件中引用,则它可以更改