0

如果我想从批处理脚本中调用另一个批处理脚本,我可以使用

CALL File.bat

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

我可以用

START File.bat

如果我希望它们同时运行。

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

4

3 回答 3

1

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

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

sh file.sh

要在后台启动它,请执行

(sh file.sh) &
于 2012-08-01T14:40:42.300 回答
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

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

于 2012-08-01T14:40:56.793 回答
0

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

  • 你不需要CALL;调用另一个脚本或程序会同步执行它。someprog.sh
  • 您附加&到命令以异步运行它;请注意,如果程序在后台尝试从标准输入读取,它将停止。someprog.sh &
于 2012-08-01T14:41:36.863 回答