[英]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.