国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

shell基礎篇(五)條件判斷

2024-06-28 13:24:09
字體:
來源:轉載
供稿:網友
shell基礎篇(五)條件判斷

寫腳本時;有時要判斷字符串是否相等,數字測試。這對后面學習的shell語句,循環,條件語句做好基礎。


條件判斷格式 1. test condition : test命令 2. [ condition ] : [] 3. 命令執行的結果 :例如cd lottu. 注意:使用[] 要注意在條件兩邊要加上空格。


文件狀態測試

操作符說明舉例
-b file檢測文件是否是塊設備文件,如果是,則返回 true。反之;返回 false。[ -b $file ]
-c file檢測文件是否是字符設備文件,如果是,則返回 true。反之;返回false。[ -c $file ]
-d file檢測文件是否是目錄,如果是,則返回 true。反之;返回false。[ -d $file ]
-f file檢測文件是否是普通文件(既不是目錄,也不是設備文件),如果是,則返回 true。[ -f $file ]
-r file檢測文件是否可讀,如果是,則返回 true。[-r file ]
-w file檢測文件是否可寫,如果是,則返回 true。[-w file ]
-x file檢測文件是否可執行,如果是,則返回 true[-x file ]
-s file檢測文件是否為空(文件大小是否大于0),不為空返回 true。[-s file ]
-e file檢測文件(包括目錄)是否存在,如果是,則返回 true。[-e file ]
測試結果如下:
[db17 ~]$ test -f a[db17 ~]$ echo $?0[@db17 ~]$ test -f c[@db17 ~]$ echo $?1[@db17 ~]$ ls cls: c: No such file or directory[@db17 ~]$ echo $?2[@db17 ~]$ test -d lottu[@db17 ~]$ echo $?0

關系運算符

運算符說明舉例
-eq檢測兩個數是否相等,相等返回 true[ 1 -eq 1 ]返回true
-ne檢測兩個數是否相等,不相等返回 true[ 10 -eq 8 ] 返回true
-gt檢測左邊的數是否大于右邊的,如果是,則返回 true。NA
-lt檢測左邊的數是否小于右邊的,如果是,則返回 true。NA
-ge檢測左邊的數是否大等于右邊的,如果是,則返回 trueNA
-le檢測左邊的數是否小于等于右邊的,如果是,則返回 true。NA
==相等。用于比較兩個數字,相同則返回 true。[ $a == $b ]
!=不相等。用于比較兩個數字,不相同則返回 true[ $a != $b ]

備注:1. 關系運算符只支持數字,不支持字符串,除非字符串的值是數字。 2. 判斷兩個數是否相等;還可以用 "==", "!=" 。也是數字專用。

其中var=10

[db17 ~]$ [ ${var} == 5 ][db17 ~]$ echo $?1[db17 ~]$ [ ${var} -lt 5 ][db17 ~]$ echo $?1[db17 ~]$ [ ${var} -gt 5 ][db17 ~]$ echo $?0[db17 ~]$ [ ${var} -eq 5 ][db17 ~]$ echo $?1

布爾運算符

運算符說明舉例
!非運算,表達式為 true 則返回 false,否則返回 true。[ ! false ]
-o或運算,有一個表達式為 true 則返回 true[ $a -lt 20 -o $b -gt 100 ]
-a與運算,兩個表達式都為 true 才返回 true[ $a -lt 20 -a $b -gt 100 ]

測試

b=5[db17 ~]$ [ ! $b == 5 ][db17 ~]$ echo $?1[db17 ~]$ [ ! -f a ]     #判斷文件是否是普通文件[db17 ~]$ echo $?1


字符串運算符

運算符說明舉例
=檢測兩個字符串是否相等,相等返回 true[ 'a' = 'ab' ]返回false
!=檢測兩個字符串是否相等,不相等返回 trueNA
-z檢測字符串長度是否為0,為0返回 true[ -z $a ]
-n檢測字符串長度是否為0,不為0返回 true[ -n $a ]
str檢測字符串是否為空,不為空返回 true[ $a ]
其實就兩組相反的,是否相等,是否為空

備注:[ $a ]這個有點意思。跟awk相同;雖然用法沒awk那么靈活。

[17 ~]$ [ $b ][db17 ~]$ echo $?0[db17 ~]$ echo $b5[db17 ~]$ unset b[db17 ~]$ echo $b[db17 ~]$ [ $b ][db17 ~]$ echo $?1


命令執行結果

一個命令執行的結果也可以充當條件判斷;若有幾個命令;是拿最后一個命令充當結果的判斷

[db17 ~]$ lsa  b  bin  lottu[db17 ~]$ echo $?0[db17 ~]$ cd li0924-bash: cd: li0924: No such file or directory[db17 ~]$ echo $?1[db17 ~]$ ls;cd li0924a  b  bin  lottu-bash: cd: li0924: No such file or directory[db17 ~]$ echo $?1

[note]這篇在后面的if...then...fi 是條件語句會經常用到。到時候好好學習吧!大家覺得對你有幫助就點個贊


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砚山县| 马关县| 明水县| 岳普湖县| 南宫市| 蕉岭县| 鄂伦春自治旗| 伽师县| 虹口区| 邯郸市| 和硕县| 渑池县| 闽侯县| 衡东县| 池州市| 延安市| 临夏县| 同仁县| 兴文县| 酒泉市| 磐石市| 安义县| 雅安市| 自贡市| 高雄县| 曲阳县| 天津市| 康乐县| 普格县| 永康市| 准格尔旗| 洮南市| 子洲县| 宁陵县| 塔城市| 木兰县| 股票| 富宁县| 田东县| 志丹县| 德州市|