如何在 Bash 中执行多个命令(其中一些在后台执行)

如何在 Bash 中执行多个命令(其中一些在后台执行)

我想在 bash 中执行多个命令,但其中一些命令在后台执行。解释此问题的最佳方式是使用以下命令,但不起作用...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

我想这可以理解为两个问题:

  1. 如何终止命令中的 &?
  2. 有什么更好的方法可以解决这个问题?

其他重要细节:

  • OpenSUSE 13.2
  • gnome 外壳

答案1

你应该试试

(sleep 5; ls) &  echo "Now"

它可以如您所愿地工作。

答案2

您需要做的就是删除;.,&它本身充当命令分隔符,因此;在其后添加是无效的。

(sleep 30; command1; command2 param ) & anotherCommand

(分号后的空格不是必需的,我只是觉得这样更容易阅读。这是 shell 语法中空格可选的少数几个地方之一 —— 大多数地方,它们要么是必需的,要么是禁止的。)

至于更好的方法……这实际上取决于你到底想做什么。我们需要更多信息才能提出更好的建议。

相关内容