我收到错误:
bash:意外标记“;”附近有语法错误
由于以下命令:
evince foo.pdf bar.pdf &; emacs foo.tex &
;
在使用后台作业时将命令与分开是否违法&
?或者这不起作用还有其他原因吗?
谢谢。
答案1
不需要分号。发送到后台后,可以自由获取另一个命令。
evince foo.pdf bar.pdf & emacs foo.tex &
答案2
顺便说一句,核心问题是(Bourne 衍生的)shell 不允许空命令。
“;”和“&”是命令终止符,分别表示 fg 和 bg。因此“; ;”(或行首的“;”)也是无效的。
(如果有尚未终止的命令,则换行符暗示“;”,除非您使用“\”来继续该行。)
不同语言对这些政策的差异很大:
C 派生语言允许空语句。
Pascal 和 PERL 有分隔符,而不是终止符。
答案3
不,它只是感到困惑,不能完全理解你的意思。
您需要将 & 与要置于后台的命令组合在一起:
$ (evince foo.pdf bar.pdf &); emacs foo.tex &
效果很好。更明确的是:
$ (evince foo.pdf bar.pdf &); (emacs foo.tex &)
特别是如果您还想在结束后链接更多命令。