bash:意外标记附近的语法错误`('

Reg*_*ser 26 bash scripts wget

我正在尝试通过 wget 下载flareget 下载管理器我收到错误

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

为什么会出现该错误,解决方案是什么?

Rad*_*anu 28

在这种情况下(以及一般情况下),您应该在 URL 周围使用单引号'或双引号"

wget  'http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz'
Run Code Online (Sandbox Code Playgroud)

从现在开始,当您在命令中使用包含括号作为参数的字符串时,您通常应该使用此方法。这是因为括号用于由 shell 进行分组,因此它们不会以任何方式与命令进行通信。所以,bash shell 会给你一个语法错误:

wget  'http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz'
Run Code Online (Sandbox Code Playgroud)


And*_*y J 12

我的与未转义的括号无关,与已经定义为与函数同名的别名有关。

一个文件中的别名:

alias foo="echo do something"
Run Code Online (Sandbox Code Playgroud)

在另一个函数中:

foo() {
    # Do something else
}
Run Code Online (Sandbox Code Playgroud)

这两个文件均来自 my ~/.bashrc,给了我无用的错误消息:

syntax error near unexpected token (
Run Code Online (Sandbox Code Playgroud)

  • 这就是我的情况。同样在我的情况下,即使采购空文件也不会删除创建的别名。所以不得不手动调用unalias <aliasName>。只有在该源文件对我有用之后。 (3认同)

cha*_*aos 10

这是因为括号。你需要像这样逃避他们:

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64\(stable\)_deb.tar.gz
Run Code Online (Sandbox Code Playgroud)

现在它应该可以工作了。