我想在 bash 中执行多个命令,但其中一些命令在后台执行。解释此问题的最佳方式是使用以下命令,但不起作用...
for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand
我想这可以理解为两个问题:
- 如何终止命令中的 &?
- 有什么更好的方法可以解决这个问题?
其他重要细节:
- OpenSUSE 13.2
- gnome 外壳
答案1
你应该试试
(sleep 5; ls) & echo "Now"
它可以如您所愿地工作。
答案2
您需要做的就是删除;
.,&
它本身充当命令分隔符,因此;
在其后添加是无效的。
(sleep 30; command1; command2 param ) & anotherCommand
(分号后的空格不是必需的,我只是觉得这样更容易阅读。这是 shell 语法中空格可选的少数几个地方之一 —— 大多数地方,它们要么是必需的,要么是禁止的。)
至于更好的方法……这实际上取决于你到底想做什么。我们需要更多信息才能提出更好的建议。