2012-08-01 64 views
0

开始。如果我想从一个批处理脚本中调用另一个批处理脚本,我可以使用呼叫并在外壳

CALL File.bat 

暂停当前的批处理文件的执行并等待调用的脚本来完成。

我可以使用

START File.bat 

,如果我希望他们能够同时运行。

如何在shell脚本中实现这种行为?

回答

1

如果你想等待:

#!/bin/bash 
# do some stuff 
/path/to/other/script 
# do other stuff 

要同时运行(即“在后台”):

#!/bin/bash 
# do some stuff 
/path/to/other/script & 
# do other stuff, then optionally: 
wait 
# this will wait for all background jobs to finish 

如果您想提供特定的输入和/或捕获输出或错误,还有其他方法和某些事情,您应该考虑有关后台进程的输入和输出重定向,但这是基本知识。

1

通过“shell”,我假设你的意思是* NIX sh。

要执行另一个脚本并等待它完成,做

sh file.sh 

在后台启动它,做

(sh file.sh) & 
+0

不需要'sh'。 – Jens 2012-08-01 14:45:05

+0

这是真的,只要该文件被标记为可执行文件即可。 – xjcg 2012-08-01 14:58:56

+0

...以及当前路径。随着您越来越熟练地使用shell编程,您可能需要指定shell的实际品牌(bash或ksh93)。 – 2012-08-01 15:18:10

0

对于bash(和其他的Bourne shell兼容shell):

  • 你不需要CALL;调用另一个脚本或程序同步执行它。 someprog.sh
  • 您将&附加到命令以异步运行它;请注意,如果程序尝试从标准输入读取,如果它位于后台,程序将暂停。 someprog.sh &