亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

shell中[]與[[]]的區(qū)別小結(jié)

 更新時(shí)間:2023年09月18日 09:45:00   作者:運(yùn)維@小兵  
多數(shù)情況下[]和[[]]是可以通用的,但是也是有區(qū)別的,本文就來(lái)介紹一下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)文章

最新評(píng)論