&&,||,(),{},& 五個符號的運用
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