1

为什么我可以在 zsh 中这样做:

zsh$ sleep 5 &; echo foo
[1] 14742
foo

但不是在bash?

bash$ sleep 5 &; echo foo
bash: syntax error near unexpected token `;'

有没有办法在bash中做同样的事情?

4

2 回答 2

10

我通常不使用zsh,但这似乎是等效的:

sleep 5 & echo foo

它也适用于zsh.

我检查了 zsh 文档,并没有看到该组合有任何特殊含义&;。这似乎只是一个后台命令,后跟一个空命令,会被忽略。bash,另一方面,不允许空命令;如果您键入以下内容,则会收到相同的错误:

; echo foo
于 2012-11-19T19:07:26.683 回答
0

一种方法是为后台进程生成一个子shell:

bash$ (sleep 5 &); echo foo

但我不确定它是否严格等同于您正在寻找的意义。

于 2012-11-19T19:07:08.010 回答