将括号符号回显到终端

Ala*_*inD 3 bash shell-script

该命令按预期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 次

最近记录:

5 年,11 月 前