Chr*_*ott 5 regex unix perl ack
我想$$在代码库中找到文字字符串:" ",但是像这样转义美元符号:
ack \$\$
Run Code Online (Sandbox Code Playgroud)
不起作用.
Wil*_*ell 16
shell引用让你感到困惑.键入时:
ack "\\\$\\\$\("
Run Code Online (Sandbox Code Playgroud)
shell插入双引号字符串,以便将\\其转换为\,\$转换为$并\(转换为,\(并且ack将字符串\$\$\(作为其参数.通过使用单引号和调用来避免shell插值要简单得多:
ack '\$\$\('
Run Code Online (Sandbox Code Playgroud)
替换ack与echo探索外壳是如何膨胀的字符串.注意
ack "\\$\\$\("
Run Code Online (Sandbox Code Playgroud)
也会工作,但原因略有不同.这里,前两个\被视为单个(转义)\,然后$被转换为a,$因为它后跟一个不是变量名中有效字符的字符. \(扩展到\(而不是简单(因为(不受插值,因此不需要转义.但请注意,在双引号之外,\(转换为(.
Shell引用规则有时会让人感到困惑!