開始。如果我想從一個批處理腳本中調用另一個批處理腳本,我可以使用呼叫並在外殼
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