在“if”中将任务发送到后台

在“if”中将任务发送到后台

为什么是这样?

if true; then sleep 3 &; fi
bash: syntax error near unexpected token `;'

我想跑

sleep 3

在后台运行,以便命令[“sleep 3”只是一个例子]将以“并行”方式运行,因此它完成得更快。但我得到这个:

bash: syntax error near unexpected token `;'

错误信息。为什么?为什么我无法将任务发送到后台?

答案1

这是因为&已经是一个语句分隔符,所以你不应该把;它放在后面。

答案2

在这种情况下,似乎您不需要分隔命令(&将它们本身分隔开)。

例如。

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok

答案3

尝试将其编写为多行:

if true; then
  sleep 3 &
fi

相关内容