linux脚本 逻辑运算,Linux-shell-逻辑运算和;
7.Shell
7.5.2命令執(zhí)行的判斷依據(jù): ; , &&, ||
1.cmd ; cmd (不考慮指令相關(guān)性的連續(xù)指令下達(dá))
一般用于多條命令之間沒有直接需求聯(lián)系,最多只是有一個(gè)執(zhí)行先后的關(guān)系。
[root@localhost tmp]# sync; shutdown -h now
2.與&&或 ||指令下達(dá)情況說明
cmd1 && cmd21.若 cmd1 執(zhí)行完畢且正確執(zhí)行($?=0),則開始執(zhí)行 cmd2。
2.若 cmd1 執(zhí)行完畢且為錯(cuò)誤 ($?≠0),則 cmd2 不執(zhí)行。
cmd1 || cmd21.若 cmd1 執(zhí)行完畢且正確執(zhí)行($?=0),則 cmd2 不執(zhí)行。
2.若 cmd1 執(zhí)行完畢且為錯(cuò)誤 ($?≠0),則開始執(zhí)行 cmd2。
[root@localhost tmp]# ls /tmp/abc && touch /tmp/abc/hehe
ls: cannot access /tmp/abc: No such file or directory
[root@localhost tmp]# ls
aaa? stderr? stdout
#測試 /tmp/abc是否存在,若存在則用 touch 建立 /tmp/abc/hehe
[root@localhost tmp]# ls /tmp/abc || mkdir /tmp/abc
ls: cannot access /tmp/abc: No such file or directory
[root@localhost tmp]# ls
aaa? abc? stderr? stdout
#測試 /tmp/abc是否存在,若不存在則予以建立,若存在就不作任何事情
[root@localhost tmp]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
[root@localhost tmp]# ls abc/
hehe
#我不清楚 /tmp/abc是否存在,但就是要建立 /tmp/abc/hehe檔案
(1)命令返回值#?
$? 是一個(gè)特殊變量,用來獲取上一個(gè)命令的退出狀態(tài),或者上一個(gè)函數(shù)的返回值。所謂退出狀態(tài),就是上一個(gè)命令執(zhí)行后的返回結(jié)果。退出狀態(tài)是一個(gè)數(shù)字,一般情況下,大部分命令執(zhí)行成功會(huì)返回 0,失敗返回 非0。
[root@localhost tmp]# ls abc/
hehe
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# ls aaaaa
ls: cannot access aaaaa: No such file or directory
[root@localhost tmp]# echo $?
2
(2)&&與||的執(zhí)行過程
command1 && command2
&&左邊的command1執(zhí)行成功(返回0表示成功)后,&&右邊的command2才能被執(zhí)行。
command1 || command2
如果||左邊的command1執(zhí)行失敗(返回非0表示失敗),就執(zhí)行&&右邊的command2,否則command2不會(huì)被執(zhí)行。
#分析ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe的執(zhí)行過程如下:
總結(jié)
以上是生活随笔為你收集整理的linux脚本 逻辑运算,Linux-shell-逻辑运算和;的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为P50 Pocket展望:首次采用副
- 下一篇: linux下安装服务,linux下的软件