首先了解下背景知識。
命令生效順序
Linux系統下命令生效的順序有以下4條:
-
絕對路徑或相對執行的命令;
-
別名;
-
Bash的內部命令;
-
按照$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秒。