linux[基礎]16-shell判斷用戶參數[01]
Shell判斷用戶參數
條件測試語句能夠測試特點的表達式是否成立
當條件成立時返回值為0
否則返回其他數值
測試語句格式:
[ 條件表達式 ] 兩側均應有一個空格
測試語句有:
文件測試
邏輯測試
整數值比較
字符串比較
文件測試:
[ 操作符 文件或目錄名 ]
參數 |
作用 |
-d |
測試是否為目錄 |
-e |
測試文件或目錄是否存在 |
-f |
判斷是否為文件 |
-r |
測試當前用戶是否有權讀 |
-w |
測試當前用戶是否可寫 |
-x |
測試當前用戶是否可執行 |
實例:
[[email protected] ~]# [ -d /etc ] #判斷是否為一個目錄
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -f /etc/inittab ] #判斷是否為一個文件
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -r /etc/inittab ] #判斷當前用戶是否可讀
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -w /etc/inittab ] #判斷當前用戶是否可寫
[[email protected] ~]# echo $?
0
[[email protected] ~]# [ -x /etc/inittab ] #判斷當前用戶是否可執行
[[email protected] ~]# echo $?
1
實例2:
[[email protected] ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist
邏輯測試:
[ 表達式1 ] 操作符 [ 表達式2 ]
操作符 |
作用 |
&& |
邏輯的與,“而且”的意思 |
|| |
邏輯的或,“或者”的以上 |
! |
邏輯的否 |
實例1:
Root用戶下:
[[email protected] ~]# [ $USER != root ] && echo "user"
[[email protected] ~]#
普通用戶下:
[[email protected] ~]$ [ $USER != root ] && echo "user"
user
[[email protected] ~]$
實例2:
Root用戶下:
[[email protected] ~]# [ $USER != root ] && echo "User" || echo "root"
root
[[email protected] ~]#
整數值比較:
[ 整數1 操作符 整數2 ]
操作符 |
作用 |
-eq |
判斷是否等於 |
-gt |
判斷是否大於 |
-lt |
判斷是否小於 |
-le |
判斷是否等於小於 |
-ge |
判斷是否等於大於 |
實例1:
[[email protected] ~]# [ 10 -gt 10 ] #判斷是否10大於10
[[email protected] ~]# echo $?
1 否
實例2:
[[email protected] ~]# [ 10 -eq 10 ] #判斷10是否等於10
[[email protected] ~]# echo $?
0 是
實例3:
[[email protected] ~]# FreeMem=`free -m | grep cache: | awk ‘{print $3}‘`
[[email protected] ~]# echo $FreeMem
205
[[email protected] ~]# [ $FreeMem -lt 1024 ] && echo "內存不足"
內存不足
[[email protected] ~]#
字符串比較:
[ 字符串1 操作符 字符串2 ]
操作符 |
作用 |
= |
比較字符串內容是否相同 |
!= |
比較字符串內容是否不同 |
-z |
判斷字符串內容是否為空 |
實例1:
[[email protected] ~]# [ -z $String ] #判斷變量是否為空
[[email protected] ~]# echo $?
0
實例2:
[[email protected] ~]# [ $LANG != "en.US" ] && echo "Not en.US"
#判斷系統語言是否為en.us
Not en.US
linux[基礎]16-shell判斷用戶參數[01]