shell 條件表達式 if case 大量企業實際應用 ...
1.1 條件表達式
1.1.1 文件判斷
常用文件測試操作符
常用文件測試操作符 |
說明 |
-d文件,d的全拼為directory |
文件存在且為目錄則為真,即測試表達式成立 |
-f文件,f的全拼為file |
文件存在且為普通文件則為真,即測試表達式成立 |
-e文件,e的全拼為exist |
文件存在則為真,即測試表達式成立。註意區別於“-f”,-e不辨別是目錄還是文件 |
-r文件,r的全拼為read |
文件存在且可讀則為真,即測試表達式成立 |
-s文件,s的全拼為size |
文件存在且文件大小不為0則為真,即測試表達式成立 |
-w文件,w的全拼為write |
文件存在且可寫則為真,即測試表達式成立 |
-x文件,x的全拼為executable |
文件存在且可執行則為真,即測試表達式成立 |
-L文件,L的全拼為link |
文件存在且為鏈接文件則為真,即測試表達式成立 |
fl -nt f2,nt 的全拼為 newer than |
文件fl比文件f2新則為真,即測試表達式成立。根據文件的修改時間來計算 |
fl -ot f2,ot 的全拼為 older than |
文件fl比文件f2舊則為真,即測試表達式成立。根據文件的修改時間來計算 |
判斷文件是否存在
[root@clsn scripts]# [ -f /etc/hosts ] [root@clsn scripts]# echo $? 0 [root@clsn scripts]# [ -f /etc/hosts1 ] [root@clsn scripts]# echo $? 1
判斷文件是否存在,返回方式
[root@clsn scripts]# [ -f /etc/hosts ] && echo "文件存在" || echo "文件不存在" 文件存在 [root@clsn scripts]# [ -f /etc/hosts1 ] && echo "文件存在" || echo "文件不存在" 文件不存在
判斷目錄是否存在
[root@clsn scripts]# [ -d /tmp ] && echo "目錄存在" || echo "目錄不存在" 目錄存在 [root@clsn scripts]# [ -d /tmp1 ] && echo "目錄存在" || echo "目錄不存在" 目錄不存在
使用變數的方法進行判斷
dir=/etc1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir目錄不存在"
1.1.2 字元串判斷
字元串測試操作符
常用字元串測試操作符 |
說明 |
-n "字元串" |
若字元串的長度不為0,則為真,即測試表達式成立,n可以理解為no zero |
-Z "字元串" |
若字元串的長度為0,則為真,即測試表達式成立,z可以理解為zero的縮寫 |
"串 1"== "串 2" |
若字元串1等於字元串2,則為真,即測試表達式成立,可使用"=="代替"=" |
"串 1" != "串 2" |
若字元串1不等於字元串2,則為真,即測試表達式成立,但不能用"!=="代替"!=" |
1.對於字元串的測試,一定要將字元串加雙引號之後再進行比較。 2.空格非空 |
-z 判斷字元串長度
[root@clsn scripts]# x= ; [ -z "$x" ] && echo "輸入為空" || echo '輸入有內容' 輸入為空 [root@clsn scripts]# x=12 ; [ -z "$x" ] && echo "輸入為空" || echo '輸入有內容' 輸入有內容
-n 判斷字元串長度
[root@clsn scripts]# x=12 ; [ -n "$x" ] && echo "輸入有內容" || echo '輸入為空' 輸入有內容 [root@clsn scripts]# x= ; [ -n "$x" ] && echo "輸入有內容" || echo '輸入為空' 輸入為空
"串 1" == " 串 2 " 使用定義變數的方式進行判斷
cmd=$1 [ "$cmd" == "start" ] && echo start # 測試 [root@clsn scripts]# cmd=start;[ "$cmd" == "start" ] && echo start start
1.1.3 整數判斷
整數二元比較操作符參考
在[]以及test中 使用的比較符號 |
在(())和[[]]中 使用的比較符號 |
說明 |
-eq |
==或= |
相等,全拼為equal |
-ne |
!= |
不相等,全拼為not equal |
-gt |
> |
大於,全拼為greater than |
-ge |
>= |
大於等於,全拼為greater equal |
-lt |
< |
小於,全拼為丨ess than |
-le |
<= |
小於等於,全拼為less equal |
判斷兩數是否相等
[root@clsn scripts]# [ 1 -eq 1 ] [root@clsn scripts]# echo $? 0 [root@clsn scripts]# [ 1 -eq 2 ] [root@clsn scripts]# echo $? 1
大於等於
[root@clsn ~]# [ 11 -ge 1 ] && echo "成立" || echo "不成立" 成立
小於
[root@clsn ~]# [ 11 -lt 1 ] && echo "成立" || echo "不成立" 不成立
大於
[root@clsn ~]# [ 11 -gt 1 ] && echo "成立" || echo "不成立" 成立
不等於
[root@clsn ~]# [ 11 -ne 1 ] && echo "成立" || echo "不成立" 成立
1.1.4 邏輯符號
常用邏輯操作符