DUK*_*UKE 4 bash escape-characters
为什么以下命令打印Smith但不打印\Smith?
echo \Smith
Run Code Online (Sandbox Code Playgroud)
应保留以下字符的字面值,<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从文件中引用,则它可以更改