21 我收到错误: bash:意外令牌';'附近的语法错误 由于以下命令: evince foo.pdf bar.pdf &; emacs foo.tex & ;使用&后台作业时,使用命令分隔命令是否非法?还是还有其他原因无法解决? 谢谢。 linux bash — DQdlM source
40 您不需要分号。将其发送到后台后,可以自由获取另一个命令。 evince foo.pdf bar.pdf & emacs foo.tex & — 西奥 source 2 宣誓2小时后,我用if陈述来帮助我。如果有人需要此:if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi — Oktav
13 顺便说一句,核心问题是(伯恩派生的)shell不允许空命令。 “;” “&”是命令终止符,分别表示fg和bg。所以“;;” (或行首的“;”)也无效。 (如果存在尚未终止的命令,则换行符表示“;”,除非您使用“ \”继续该行。) 这些政策的语言差异很大: C派生的语言允许空语句。 Pascal和PERL具有分隔符,而不是终止符。 — 增强现实 source
-3 不,这只是令人困惑,无法完全理解您的意思。 您需要将&与要在后台放入的命令分组: $ (evince foo.pdf bar.pdf &); emacs foo.tex & 很好 更明确的是: $ (evince foo.pdf bar.pdf &); (emacs foo.tex &) 尤其是如果您随后还要在结束后链接更多命令。 — 马延科 source 1 无需为了证明使用不必要的分号而产生子shell。括号不仅仅是语法。他们导致额外的工作要做。 — chepner 2012年
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi