该命令按预期echo Hello World
打印Hello World
,但echo Hello (World)
生成错误syntax error near unexpected token `('
。
我知道,支架等()
,{}
,[]
是令牌和有特殊的含义,那么你如何在“逃避”这些bash
脚本?
ilk*_*chu 15
它们实际上并不是词法分析器意义上的标记,除了普通的括号(
和)
。
{
并}
特别不需要在所有的任何引号:
$ echo {Hello World}
{Hello World}
Run Code Online (Sandbox Code Playgroud)
(除非您将{
或}
作为命令的第一个单词,它们被解释为关键字;或者如果您{a,b}
在单个单词中使用逗号或双点,则它是括号扩展。)
[]
也只是特殊的 glob 字符,如果没有匹配的文件名,默认行为是保持原样。
但无论如何,为了逃避它们,您通常会用单引号或双引号引用它们:
echo "(foo bar)"
echo '(foo bar)'
Run Code Online (Sandbox Code Playgroud)
或者只是一个一个地转义相关字符,虽然这有点累:
echo \(foo\ bar\)
Run Code Online (Sandbox Code Playgroud)
或者你喜欢的任何组合:
echo \(fo"o bar"')'
Run Code Online (Sandbox Code Playgroud)
看:
归档时间: |
|
查看次数: |
2882 次 |
最近记录: |