今天看到Shell
中與操作符&&
與或操作符||
的含義時(shí)發(fā)現(xiàn)它們跟我在其他一些語(yǔ)言(比如R和Python)中有點(diǎn)不太一樣:
- 邏輯“與”的運(yùn)算符號(hào)是&&堡掏,它表示當(dāng)前面的命令執(zhí)行成功后才會(huì)執(zhí)行它后面的命令
- 邏輯“或”呻纹,它在 Linux 系統(tǒng)中的運(yùn)算符號(hào)為||宋梧,表示當(dāng)前面的命令執(zhí)行失敗后才會(huì)執(zhí)行它后面的命令
認(rèn)真注意下匣沼,雖然一般看來(lái)使用結(jié)果和兩者為真皆為真的與操作,以及兩者任意為真則為真的或操作效果一致乃秀,但Shell中這兩者二元操作符只有左側(cè)為真或?yàn)榧贂r(shí)才執(zhí)行后面的命令肛著,這實(shí)際上提供了一種條件判斷的實(shí)現(xiàn)圆兵。
看命令代碼:
[root@linuxprobe Desktop]# [ 10 -gt 10 ] && echo "yes" || echo "no"
no
[root@linuxprobe Desktop]# [ 10 -eq 10 ] && echo "yes" || echo "no"
yes
第1條語(yǔ)句可以視為以下if
語(yǔ)句的精簡(jiǎn)版
[root@linuxprobe Desktop]# if [ 10 -gt 10 ]; then
> echo "yes"
> else
> echo "no"
> fi
no
有意思吧?枢贿!&&
接條件為真時(shí)的操作殉农,而||
接為假時(shí)的操作。
不過(guò)值得注意的是不能執(zhí)行多條命令局荚,而且&&
與||
不能反過(guò)來(lái):
[root@linuxprobe Desktop]# [ 10 -gt 10 ] || echo "no" && echo "yes"
no
yes
根據(jù)我在文章一開始提到兩個(gè)運(yùn)算符的含義超凳,想想是為什么呢?歡迎在下方留言討論耀态。