我试图运行这段代码:
lsof | grep "/file/path/"
如果文件有这个标志:
`
我收到一个错误:
syntax error near unexpected token '`'
我试图用
\
逃避这个标志,但我得到了同样的错误。操作系统:CentOS 6
最佳答案
` 字符(通常称为“反引号”)由 shell 专门解释,即使被引号包围。
具体来说,`cmd args`
意思是“执行命令 cmd args
并用该命令的输出替换反引号的字符串。”如果用引号括起来 -- "`cmd args`"
-- 被替换的字符串不会进行分词或路径名扩展。 (这通常是你想要的,所以引用的反引号很常见。)
该语法已被弃用很长时间,但仍被接受。新代码应使用 $(cmd args)
反而。如上所述,您通常希望避免对替换文本进行分词和路径名扩展,因此您通常会看到 "$(cmd args)"
.
简而言之,如果要将文字反引号放入参数字符串中,则应使用单引号:
lsof | grep '/file/path`s/'
或\-转义反引号:
lsof | grep "/file/path\`s/"
关于Bash grep 不适用于撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24128203/