【问题标题】:Syntax error near unexpected token `;' when running a command in Bash意外标记 ';' 附近的语法错误在 Bash 中运行命令时
【发布时间】:2021-10-01 23:36:18
【问题描述】:

在终端的 Bash 中,不可能运行以和 & 结尾的命令(被发送到后台),然后是另一个命令(显然它们之间有一个 ;)。这是为什么?为什么你不能运行任何带有&;$ ; 的东西?

我正在尝试重新创建 502 错误并尝试对测试服务器中的特定页面进行 DoS。我试图运行这个:

while true; do curl -s https://some.site.com/someImage.jpg > /dev/null &; echo blah ; done

作为终端中的“单线”。但是,我收到了这个错误:

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

但是,这些命令是单独运行的,当我不在后台运行 curl 命令时,它也可以作为循环运行。当它编写一个单行脚本时,它也可以工作,“/tmp/curlBack.sh”只包含

curl -s https://some.site.com/someImage.jpg > /dev/null &

然后运行

while true; do bash /tmp/curlBack.sh ; echo blah ; done

为什么会出现此错误,如何解决?

【问题讨论】:

  • @RuudHelderman,据我所见。我想知道为什么会发生这种情况,而不是如何解决它。 PalaceChan问的是怎么做。他们得到的答案分别不是为什么会发生这种情况,而是如何解决它。这些问题确实非常相关,但并不完全相同。

标签: bash


【解决方案1】:

问题在于和号 (&) 后面的分号:

&符号与分号或换行符的作用相同,因为它表示命令的结束,但它会导致 Bash 异步执行命令。 BashSheet

基本上,就好像你要把双分号背靠背一样,也会导致语法错误。

要解决这个问题,你只需要删除分号,我就是这样测试的,它似乎可以工作:

while true; do curl -s https://some.site.com/someImage.jpg > /dev/null & echo blah ; done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2014-02-26
    • 2018-12-18
    • 2014-01-20
    • 2015-12-11
    • 2021-07-29
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多