Shell編程之條件語句 學習目標: 掌握shell腳本條件測試 掌握if語句編程 目錄結構: 條件測試 條件測試概述 l 對特定的條件進行判斷,以決定如何執行操作 l 測試的方法 方法1:test 條件表達式 方法2:【條件表達式】 l 當條件成立時,測試語句的返回值為0,否則為其他數值 條件測試 ...
Shell編程之條件語句
學習目標:
掌握shell腳本條件測試
掌握if語句編程
目錄結構:
條件測試
條件測試概述
l 對特定的條件進行判斷,以決定如何執行操作
l 測試的方法
方法1:test 條件表達式
方法2:【條件表達式】
l 當條件成立時,測試語句的返回值為0,否則為其他數值
條件測試的分類
1、 文件測試
2、 整數測試
3、 字元串測試
4、 邏輯測試
文件測試
l 格式:【 操作符 文件或目錄 】
l 常用的測試操作符
-d:測試是否為目錄(directory)
-e:測試目錄或文件是否存在(exist)
-f:測試是否為文件(file)
-r:測試當前用戶是否可讀(read)
-w:測試當前用戶是否可寫(write)
-x:測試當前用戶是否可執行(excute)
實例:
[root@poll ~]# [ -d /etc ]
[root@poll ~]# echo $?
0
[root@poll ~]# [ -d /etc/profile ]
[root@poll ~]# echo $?
1
[root@poll ~]# [ -d /etc ]&&echo "yes" //&&意思是前面執行成功載執行後面
Yes
整數測試
l 格式:[ 整數1 操作符 整數2 ]
l 常用的測試測試操作符
-eq:等於(equal)
-ne:不等於(not equal)
-gt:大於(greater than)
-lt:小於(lesser than)
-le:小於或等於(lesser or equal)
-ge:大於或等於(greater or equal)
實例:
[root@poll ~]# who |wc -l
3
[root@poll ~]# [ `who |wc -l` -gt 5 ] && echo too many
[root@poll ~]# [ `who |wc -l` -gt 2 ] && echo too many
too many
字元串測試
l 格式1:
[ 字元串1 = 字元串2 ]
[ 字元串1 != 字元串2 ]
l 格式2:
[ -z 字元串 ]
常用的測試操作符:
=:字元串內容相同
!=:字元串內容不同
-z:字元串內容為空
實例:
[root@poll ~]# echo $LANG
zh_CN.UTF-8
[root@poll ~]# [ $LANG!="en.US" ] && echo "Not en.US"
Not en.US
邏輯測試
l 格式1:
[ 表達式1 ] 操作符 [ 表達式2 ] …
命令1 操作符 命令2 …
l 常用的測試操作符
-a或&&:邏輯與,“而且”的意思,兩個表達式都要執行成功
-o或||:邏輯或,“或者”的意思,有一個執行成功就行了
!:邏輯否
實例:
[root@poll ~]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"
you can open it
[root@poll ~]# [ -f /etc ] || [ -d /home ] && echo ok
Ok
If語句
If單分支語句
l If單分支語句結構
if 條件測試操作
then 命令序列
fi
if執行成功然後執行then。if沒有執行成功,啥都不幹
if雙分支語句結構
if 條件測試操作
then 命令序列1
else 命令序列2
fi
if執行成功,然後執行then。If沒有執行成功,執行else
實例:
[root@poll ~]# cat a.sh
#!/bin/bash
#This is my first shell-script
#2018-03-16
read -p "請輸入你的性別:" one
if [ $one = 男 ]
then
echo "you are handsome"
else
echo "you are beautiful"
fi
[root@poll ~]# sh a.sh
請輸入你的性別:男
you are handsome
[root@poll ~]# sh a.sh
請輸入你的性別:女
you are beautiful
if多分支語句
if 條件測試操作1
then 命令序列1
elif 條件測試操作2
then 命令序列2
else 命令序列3
fi
條件測試操作1執行成功,執行命令序列1;失敗則執行條件測試2,條件測試2執行成功則執行命令序列2,失敗則執行命令序列3。
實例:
[root@poll ~]# vi b.sh
#!/bin/bash
#This is …
read -p " 請輸入你的年齡:" one
if [ $one -le 18 ]
then echo "you are young"
elif [ $one -gt 18 ] && [ $one -le 60 ]
then echo "you are so happy"
else echo "you are old"
fi
[root@poll ~]# sh b.sh
請輸入你的年齡:12
you are young
[root@poll ~]# sh b.sh
請輸入你的年齡:19
you are so happy
接下來講case語句