1. 程式人生 > 其它 >shell的測試

shell的測試

shell的測試
[ 表示式 ]
[空格 數字 空格 數字 空格]
test 表示式

1、字串測試

-z 字串為空 [ -z 字串 ]
!-z字串為非空 [ !-z 字串 ]
[root@vh01 ~]# a=12
[root@vh01 ~]# [ -z $a ]
[root@vh01 ~]# echo $?
1
[root@vh01 ~]# [ ! -z $a ]
[root@vh01 ~]# echo $?
0

字串比較
[ a == a ]
[ a != a ]
STRING1 == STRING2
STRING1 != STRING2
INTEGER1 -eq INTEGER2
INTEGER1 -ge INTEGER2


2、數字比較
[root@vh01 ~]# [ 3 -eq 3 ] 判斷3是否等於3
-eq 等於 equal
-ne 不等於 not equal
-gt 大於 greater than
-ge 大於等於
-lt 小於 less than
-le 不於等於

[root@vh01 ~]# [ 3 -eq 3 ] && echo Y || echo N
[root@vh01 ~]# [ 3 -eq 4 ] && echo Y || echo N

命令的組合
A&&B 僅A成功,才執行B
A||B 僅A失敗,才執行B
A;B 執行A,執行B

請輸入一個數
你猜對了
遺憾!
#!/bin/bash
read -p "你確定要刪除嗎y/n?" sure
[ -z $sure ]&& exit
[ $sure = y ]&& rm -rf $1 || echo "請輸入值"

使用者數大於5報警發郵件的指令碼
#!/bin/bash
NUM=$(who |wc -l)
[ $NUM -ge 5 ]&& mail -s 'error' root < /etc/passswd

[root@vh01 script]# echo $RANDOM 隨機數
#!/bin/bash
num=$[RANDOM%10]
read -p '請輸入一個數:' guess
[ $num -eq $guess ] && echo "你猜對了" || echo "遺憾!"

3、對檔案和目錄的測試
-e 檔案或目錄 判斷是否存在
-d 檔案或目錄 判斷是否存在且為目錄
-f 檔案或目錄 判斷是否存在且為檔案
-r 檔案或目錄 判斷是否存在且有讀許可權
-w 檔案或目錄 判斷是否存在且有寫許可權
-x 檔案或目錄 判斷是否存在且有執行許可權
-s 檔案或目錄 判斷是否存在且非空

[root@vh01 ~]# [ -f /etc/hosts ] && echo Y || echo N

[root@vh01 script]# vim mount.sh
#!/bin/bash
[ ! -d /mnt/iso ] && mkdir -p /mnt/iso
[ -e /ISO/rhel-server-6.7-x86_64-dvd.iso ]&& mount -o loop /ISO/rhel-server-6.7-x86_64-dvd.iso /mnt/iso

test 測試操作

[root@vh01 script]# test 3 -eq 3
[root@vh01 script]# echo $?
0
[root@vh01 script]# [ 3 -eq 3 ]
[root@vh01 script]# echo $?
0