第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Shell腳本編程之條件測(cè)試中[]和[[]]的那些坑

        在Shell编程中,条件测试是经常被使用到的一个知识点,但在条件测试中,多种语法格式也会对初学者产生很多困惑,今天我们就来一起梳理一下条件测试中的那些坑

        首先,我们先来看第一个迷惑的地方:

                使用单个中括号可以进行条件测试,同时使用双中括号也可以进行条件测试,那么这两种不同的语法格式究竟有什么共同之处?又有什么不同之处呢?

                总结起来,可以分为1个相同点,3个不同点

                (1)、相同点

                当只有一个测试条件时,单括号和双括号是等价的,此时没有任何区别,例如:

                [ -f  /etc/fstab ]  &&  echo  "yes"  ||  echo  "no"

                [[ -f  /etc/fstab ]]  &&  echo  "yes"  ||  echo  "no"

                运行结果如下:

                https://img1.sycdn.imooc.com//5ba9d5e50001877c09130136.jpg

                (2)、不同点一

                当存在多个测试条件时,单括号和双括号语法格式是有区别的,区别如下:

                单括号中,判断条件1和判断条件2之间只能使用-a(与)、-o(或),不能使用&&和||,见下面例子:

                num1=200        #定义变量num1,赋值为200

                [ -f /etc/fstab  -a  $num1  -gt  0 ]  && echo yes || echo no 

                [ -f /etc/fstab &&  $num1  -gt  0 ] && echo yes || echo no

                运行结果如下:

                https://img1.sycdn.imooc.com//5ba9d8b500017ee810240155.jpg

                (3)、不同点二

                双括号中,和单括号正好相反,判断条件1和判断条件2只能使用&&和||,不能使用-a和-o,见下面的例子:

                [[ -f /etc/fstab && -d /etc/rc.d/ ]] && echo yes || echo no 

                [[ -f /etc/fstab -a -d /etc/rc.d/ ]] && echo yes || echo no 

                运行结果如下:

                https://img1.sycdn.imooc.com//5ba9d97a0001963710090149.jpg

                (4)、不同点三

                比较数字大小时,我们知道条件测试的语法如下: 

                        [ $num1 -eq $num2 ]                  -----num1和num2相等,则为真

                        [ $num1 -ne $num2 ]                  -----num1和num2不相等,则为真

                        [ $num1 -gt $num2 ]                   -----num1大于num2,则为真

                        [ $num1 -lt $num2 ]                     -----num1小于num2,则为真

                        [ $num1 -ge $num2 ]                   -----num1大于等于num2,则为真

                        [ $num1 -le $num2 ]                     -----num1小于等于num2,则为真

                        >                                                    ----使用大于号

                        >=                                                  ----使用大于等于号

                        <                                                    ----使用小于号

                        <=                                                  ----使用小于等于号

                         !=                                                   ----使用不等于号

                        ==                                                   ----使用等于号

                单括号中,只能使用-eq、-ne、-gt、-lt、-ge、-le,不能使用>、>=、<、<=、!=、==符号,例如下面的例子:

                num1=100                                                # 定义变量1并赋值为100

                num2=200                                                # 定义变量2并赋值为200

                num3=300                                                # 定义变量3并赋值为300

                [ $num1 -gt $num2 ] && echo yes || echo no

                [ $num1 > $num2 ] && echo yes || echo no

                运行结果如图:

                https://img1.sycdn.imooc.com//5ba9dd8c0001f7cc08340326.jpg

                结果分析:上图可以看出,使用-gt和-lt和-eq时,大小比较是符合预期结果的;但使用>和<和==时,有时候大小结果比较是正确的,有时候又是错误的;

                结论:在单括号中,务必使用-gt、-lt、-eq、-le、-ge和-ne进行数值大小比较,避免使用>、>=、<、<=、!=、==符号进行数值大小比较,尽管有些情况下是正确的

                双括号中,既可以使用-gt、-lt、-eq、-le、-ge和-ne进行数值大小比较,也可以使用>、<、!=、==符号进行数值大小比较,看下面的例子:

                https://img1.sycdn.imooc.com//5ba9e09c00018ae108010385.jpg

                Tips:细心的朋友可以发现,在双括号中可以使用>、<、==和!=,但我们没说可以使用>=和<=,下面的例子看下是否可以使用:

                https://img1.sycdn.imooc.com//5ba9e1010001761408060172.jpg

                结果分析:当使用>=和<=时,报“条件表达式中有语法错误”

                结论:在双括号[[ ]]中使用条件测试时,不能直接使用>=和<=符号,不符合语法规定;但可以在双括号(( ))中使用,看下面的例子:

                https://img1.sycdn.imooc.com//5ba9e19700015d5608010223.jpg

                总结:Shell语法中有很多的坑,在学习的过程中一定要善于总结知识点的相同点和不同点,这样才能逐步熟悉Shell编程,在开发大型工具脚本时,才能做到游刃有余

點(diǎn)擊查看更多內(nèi)容
4人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
全棧工程師
手記
粉絲
1.1萬(wàn)
獲贊與收藏
117

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消