shell中[]與[[]]的區(qū)別小結(jié)
區(qū)別一
[ ]是符合POSIX標(biāo)準(zhǔn)的測(cè)試語(yǔ)句,兼容性更強(qiáng),幾乎可以運(yùn)行在所有的Shell解釋器中
[[ ]]僅可運(yùn)行在特定的幾個(gè)Shell解釋器中(如Bash等)
區(qū)別二:<和>在[[ ]]中用作排序,而[ ]不支持
進(jìn)行比較前先設(shè)置LANG=C,在排序時(shí)使用ASCII碼順序
數(shù)字的ASCII碼應(yīng)該小于大寫(xiě)字母,使用[[ ]]的結(jié)果是正確的
區(qū)別三:[ ]中使用-a和-o表示邏輯與和邏輯或,[[ ]]使用&&和||來(lái)表示
[[ ]]不支持-a
區(qū)別四:在[ ]中==是字符匹配,在[[ ]]中是模式匹配
[[ ]]中表示變量name是否以字母d開(kāi)頭
區(qū)別五:[ ]不支持正則匹配,[[ ]]支持用=~進(jìn)行正則匹配
[[ ]]判斷變量name的值是否包含字母c
區(qū)別六:[ ]僅在部分Shell中支持用()進(jìn)行分組,[[ ]]均支持
[ 1 == 1 -a (2 == 2 -o 3 == 4) ] && echo Y || echo N [[ 1 == 1 && (2 == 2 || 3 == 4) ]] && echo Y || echo N #[[]]不支持-a和-o
區(qū)別七:[ ]中如果變量沒(méi)有定義,那么需用雙引號(hào)引起來(lái),[[ ]]中不需要
參考書(shū)籍:《Linux Shell核心編程指南》
遇到的坑
1、[[ ! -f hosts ]]條件判斷導(dǎo)致腳本退出
[[ ! -f hosts ]] && echo "ERROR:hosts Not Found" && exit 1 echo $? 1
原因
如果hosts文件存在,那么[[ ! -f hosts ]]的狀態(tài)碼則為1,如果腳本開(kāi)啟了set -e,那邊會(huì)導(dǎo)致腳本退出
解決
如果環(huán)境監(jiān)測(cè)正常,在后面用echo輸出一句話即可
[[ ! -f hosts ]] && echo "ERROR:hosts Not Found" && exit 1 echo "INFO:Check_Env Is Ok"
到此這篇關(guān)于shell中[]與[[]]的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)shell []與[[]]內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell腳本for循環(huán)實(shí)現(xiàn)文件和目錄遍歷
本文主要介紹了shell腳本for循環(huán)實(shí)現(xiàn)文件和目錄遍歷,首先進(jìn)行一個(gè)要遍歷的文件夾,然后循環(huán)查看每個(gè)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11linux shell 自定義函數(shù)方法(定義、返回值、變量作用域)
linux shell 可以用戶(hù)定義函數(shù),然后在shell腳本中可以隨便調(diào)用。下面說(shuō)說(shuō)它的定義方法,以及調(diào)用需要注意那些事項(xiàng)2014-09-09CentOS中使用Shell腳本實(shí)現(xiàn)每天自動(dòng)備份網(wǎng)站文件和數(shù)據(jù)庫(kù)并上傳到FTP中
這篇文章主要介紹了CentOS中使用Shell腳本實(shí)現(xiàn)每天自動(dòng)備份網(wǎng)站文件和數(shù)據(jù)庫(kù)并上傳到FTP中,本文腳本比較實(shí)用,其它Linux系統(tǒng)也可參考,需要的朋友可以參考下2014-12-12shell 通過(guò)makefile傳參給c語(yǔ)言的實(shí)現(xiàn)示例
本文主要介紹了shell 通過(guò)makefile傳參給c語(yǔ)言的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03linux shell中的比較符號(hào)與特殊符號(hào)介紹
本文為大家介紹linux shell中的特殊符號(hào),包括字符串比較、數(shù)字比較與計(jì)算、特殊字符等,學(xué)習(xí)shell的朋友可以看下2013-06-06Linux shell查找文件顯示行號(hào)和對(duì)應(yīng)區(qū)間的內(nèi)容
今天小編就為大家分享一篇關(guān)于Linux shell查找文件顯示行號(hào)和對(duì)應(yīng)區(qū)間的內(nèi)容,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12分享一個(gè)入門(mén)級(jí)可控多線程shell腳本代碼
這篇文章主要介紹了分享一個(gè)入門(mén)級(jí)可控多線程shell腳本代碼,需要的朋友可以參考下2016-02-02