2012-08-01 49 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 &