shell 腳本控制命令的執行順序,和腳本執行中斷退出


&&,||,(),{},& 五個符號的運用

shell腳本執行命令的時候,有時候會依賴於前一個命令是否執行成功。而&&和||就是用來判斷前一個命令執行效果的。

也可以使用 $? 變量判斷一個命令是否執行成功。根據返回的結果判斷是否執行下面的命令。

1  &&
   使用方法:cmd1 &&  cmd2
   這個方式簡單明了,cmd1如果返回結果為真(即執行返回為0,成功執行)后,cmd2才被執行
   換句話說,如果cmd1執行成功&&那么執行cmd2
   這里有個命令
   [ -f /home/dellogs.sh ] && echo "清除日至腳本存在"
   總之,&&符號代表如果第一個命令執行成功才執行第二個命令。
2  ||
   使用方法:cmd1 ||cmd令2
   ||命令,cmd1沒有執行成功則執行cmd2
   如簡單例子
   cp wopper.txt oop.txt || echo "cp命令執行沒有成功"
   如果||左邊的命令沒有執行成功,則屏幕中除顯示“cp命令執行沒有成功”
   下面給出一個更為實用的例子,
   awk ‘{print$1,$5}’ acc.qrt >qtr.tmp || echo "sorry the payroll(薪水) extraction(抽取) did'not work" | mail root

 

實現shell的三元操作符:

cmd1 && cmd2 || cmd3

如果cmd1執行成功,則執行cmd2,否則執行cmd3


3 除了使用&&和||這兩方法外,還可以用(),{}這兩個符號把命令連接起來
  ()和{}存在的目的只是為了,能一個shell或子shell中執行一組命令
   使用方法(cmd1;cmd2;cmd3;...)和{cmd1;cmd2;cmd3;...}
   這種情況比較少遇到,一般要和&&,||兩個命令一起使用。
   例如
   comet monthent || (echo “Hello,quess what! comet did not work”| mail root;exit)

 

 4、使用&可以將一個命令放在后台運行,從而使shell腳本能夠繼續往走執行;

for ((i=0;i<10;i++));do
  sleep 5 &
done

echo "done"

上面的腳本執行后會立即打印出"done",sleep命令被扔給后台執行,不會阻塞腳本執行。

如果想要在進入下個循環前,必須等待上個后台命令執行完畢,可以使用wait命令:

for ((i=0;i<10;i++));do
  sleep 5 &
  wait
done

echo "done"

這樣,需要等待50s后才能在屏幕上看到"done"。

 

5,exit 命令退出shell,判斷上一個命令是否執行成功,可用 echo $? ,為0,表示執行成功,不為0表示失敗。

  失敗時,可以使用exit命令退出整個shell腳本的進程。

 

https://www.cnblogs.com/zhaolizhe/p/6923501.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM