shell腳本中等待上一條命令執行結束在執行下一條。

 

首先了解下背景知識。

命令生效順序

Linux系統下命令生效的順序有以下4條:

  1. 絕對路徑或相對執行的命令;

  2. 別名;

  3. Bash的內部命令;

  4. 按照$PATH環境變量定義的目錄查找順序搜到的第一個命令。

實際shell腳本編寫過程中,總會有這麼一個場景,

 

#!/bin/bash
file=command1
command2 $file
​

下一條命令command2執行所需要的參數或者需要涉及的文件,是由上一條命令command1執行的結果產生的。

而command執行需要的時間可能要1分鐘,但是個人實踐之後認爲shell腳本中的命令都是順序執行的

這時候就需要我們等待着command1執行完在執行command2。

  • 1 &&

shell1 && shell2 && shell3
  • 2 若有for循環 在循環體之後使用wait sleep

#!/bin/bash
​
  source ~/.bashrc
​
  fun(){
​
  echo "fun is begin.timeNum:$timeNum"
​
  local timeNum=$1
​
  sleep $timeNum &
​
 
​
  wait #這個只等待wait前面sleep
​
  echo "fun is end.timeNum:$timeNum"
​
  }
  • 3

#!/bin/sh
command 1
output=`command 2`
command 3
  • 4

#!/bin/bash
for ((i=0;i<5;i++))
do
sleep 3;echo a
done
​
#運行需要15秒。
​
​
#!/bin/bash
for ((i=0;i<5;i++))
do
{
sleep 3;echo a
} &
done
wait
​
#打開5個子進程並行,運行只需要3秒。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章