开始。如果我想从一个批处理脚本中调用另一个批处理脚本,我可以使用呼叫并在外壳
CALL File.bat
暂停当前的批处理文件的执行并等待调用的脚本来完成。
我可以使用
START File.bat
,如果我希望他们能够同时运行。
如何在shell脚本中实现这种行为?
开始。如果我想从一个批处理脚本中调用另一个批处理脚本,我可以使用呼叫并在外壳
CALL File.bat
暂停当前的批处理文件的执行并等待调用的脚本来完成。
我可以使用
START File.bat
,如果我希望他们能够同时运行。
如何在shell脚本中实现这种行为?
如果你想等待:
#!/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
如果您想提供特定的输入和/或捕获输出或错误,还有其他方法和某些事情,您应该考虑有关后台进程的输入和输出重定向,但这是基本知识。
通过“shell”,我假设你的意思是* NIX sh。
要执行另一个脚本并等待它完成,做
sh file.sh
在后台启动它,做
(sh file.sh) &
对于bash(和其他的Bourne shell兼容shell):
CALL
;调用另一个脚本或程序同步执行它。 someprog.sh
&
附加到命令以异步运行它;请注意,如果程序尝试从标准输入读取,如果它位于后台,程序将暂停。 someprog.sh &
不需要'sh'。 – Jens 2012-08-01 14:45:05
这是真的,只要该文件被标记为可执行文件即可。 – xjcg 2012-08-01 14:58:56
...以及当前路径。随着您越来越熟练地使用shell编程,您可能需要指定shell的实际品牌(bash或ksh93)。 – 2012-08-01 15:18:10