簡體   English   中英

Shell 腳本一個接一個地運行

[英]Shell scripts run one after another

我有 5 個 shell 腳本。 每個都有一個java命令。 以前的作業 output 輸入到下一個作業。

我創建了一個superScript.sh

//mail - to inform beginning
sh script1.sh;
sh script2.sh;
sh script3.sh;
sh script4.sh;
sh script5.sh;
//mail to inform end

示例script1.sh

cd toBaseDirectory;
java -cp /path/to/application.jar main.class parameter

但是所有的工作都是同時開始的。 我怎樣才能使這個順序?

嘗試像這樣運行javas

java -cp /path/to/application.jar main.class parameter & wait

如果只想在第一個成功退出時運行第二個命令。 為此,請使用 && 加入他們

command1 && command2

簡單的例子

~$ cat abc.sh 
#!/usr/bin/env bash
echo "hi"

~$ cat pqr.sh 
#!/usr/bin/env bash
echo "batman say :  $1"

如果 abc.sh 執行成功則只執行 pqr.sh

~$ retval=$(./abc.sh) && result=$(./pqr.sh "$retval") && echo "$result"
batman say :  hi

您也可以嘗試使用 shell 腳本執行 java 命令的類似方法

注意:要按命令順序執行 Shell 腳本,等待第一個完成后再開始下一個。 您可以使用; command1; command2

wait等待進程完成

您也可以選擇僅在第一個命令成功退出時才運行第二個命令。 為此,請使用&&加入他們

cmd1 && cmd2

但在這樣的重復情況下,我建議在腳本正文中使用一個簡單的循環:

for n in {1..5} ; do sh script${n}.sh ; done

循環不僅可以按順序運行它們,而且在需要時更容易調整和重用,使用大括號擴展

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM