2013-10-19 324 views
2

我想让shell脚本运行jeykll -w servesass --watch style.scss:style.css,所以我不必担心每次我想在本地开发。所以我创建了一个shell脚本,但显然,如果我先将jekyll命令放入,那么在jekyll完成之前,它不会运行sass命令。那么怎样才能一次运行两个命令呢?我是否必须发出命令在终端中打开另一个选项卡,然后运行sass?必须有更好的方式来做到这一点。如何在shell脚本中同时运行两个命令?

+1

从一个脚本中,你可以在后台运行它们,以&符号结尾。 – lurker

回答

4

您正在寻找fork这个进程,所以当前shell并没有等待我假设的命令。

jeykll -w serve && sass --watch style.scss:style.css 

上面将等待第一命令与一个非差错状态

jeykll -w serve ; sass --watch style.scss:style.css 

上面将等待第一指令完成并忽略退出状态完成。

所以,如果我理解正确,你想要多个命令同时运行。为此,可以在命令参考的末尾使用&运算符。

Bash &(&符号)是一个用于fork过程的内置控制操作符。在Bash手册页中,“如果命令由控制操作员&终止,则shell在子shell中在后台执行该命令”。

jeykll -w serve & 
sass --watch style.scss:style.css &