
我收到錯誤:
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 &)
特別是如果您想在結束後連結更多命令。