天天看點

Linux _ Day9 Shell程式設計之條件判斷與流程控制

一、條件判斷式語句

兩種判斷格式

(1):[root@localhost ~]# test  -e  /root/install.log

 注:echo  $?  證明上一條指令執行

(2):[root@localhost ~]# [  -e  /root/install.log  ]

Linux _ Day9 Shell程式設計之條件判斷與流程控制

注:第一個判斷指令如果正确執行,則列印“yes“,否則列印”no“。

注:中括号兩邊加上空格。

Linux _ Day9 Shell程式設計之條件判斷與流程控制

(1):[root@localhost ~]# [  -w  cjj.txt  ]  &&  echo  "yes"  ||  echo  "no"

# 判斷檔案是否擁有寫權限

Linux _ Day9 Shell程式設計之條件判斷與流程控制

[root@localhost ~]# ln  /root/cjj.txt  /tmp/stu.txt

# 建立個硬連接配接

[root@localhost ~]# [  /root/cjj.txt  -ef  /home/stu.txt  ]  &&  echo  "yes"  ||  echo  "no"

# 檢視兩個檔案是不是硬連接配接,inode号相同

Linux _ Day9 Shell程式設計之條件判斷與流程控制

[root@localhost ~]# [  23 -ge  22]  &&  echo  "yes"  ||  echo  "no"

# 判斷23是否大于等于22,當然是啦。

[root@localhost ~]# [  23 -le  22]  &&  echo  "yes"  ||  echo  "no"

# 判斷23是否大于等于22,當然不是。

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

(1):[root@localhost ~]# name=cjj

# 給name變量指派

[root@localhost ~]# [  -z  "$name"  ]  &&  echo  "yes"  ||  echo  "no"

no

# 判斷name變量是否為空,因為不能為空,是以傳回no

Linux _ Day9 Shell程式設計之條件判斷與流程控制

[root@localhost ~]# name=“”   時

Linux _ Day9 Shell程式設計之條件判斷與流程控制

(2):aa=11

        bb=22

# 給變量aa和bb指派

[root@localhost ~]# [  "$aa"  ==  "bb"  ]  &&  echo  "yes"  ||  echo  "no"

# 判斷兩個變量的值是否相等,明顯相等,是以傳回no

Linux _ Day9 Shell程式設計之條件判斷與流程控制

注:"aa"  "bb"  既是字元串也是整數,可以用 = 也可以用 == ,建議用 ==

Linux _ Day9 Shell程式設計之條件判斷與流程控制

[root@localhost ~]# aa=11

[root@localhost ~]# [  -n  "$aa"  -a  "$aa"  -gt  23  ]  &&  echo  "yes"  ||  echo  "no"

[root@localhost ~]# no

# 判斷變量aa是否有值,同時判斷變量aa是否大于23

# 因為變量aa的值大于23,是以雖然第一個判斷值為真,傳回的結果也是假

二、單分支if語句

if  [  條件判斷式  ];then

  程式

fi

或者:

if  [  條件判斷式  ]

  then

注意:

(1):if 語句使用 fi 結尾,和一般語言使用大括号結尾不同

(2):[  條件判斷式  ] 就是使用 test 指令判斷,是以中括号和條件判斷式之間必須有空格

(3): then 後面跟符合條件之後執行的程式,可以放在 [ ] 之後,用" ; "分割.也可以換行寫入,就不需要" ; "了

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

三、雙分支 if 條件語句

Linux _ Day9 Shell程式設計之條件判斷與流程控制

    條件成立時,執行的程式

  else

    條件不成立時,執行的另一個程式

Linux _ Day9 Shell程式設計之條件判斷與流程控制

例子:判斷apache服務是不是在運作

Linux _ Day9 Shell程式設計之條件判斷與流程控制

注:提取含有httpd的行,剔除含有grep的行。

注:給腳本起名時要避開httpd這個關鍵字,不然會一直檢測到有httpd服務程序

四、多分支if語句

if  [  條件判斷式1  ]

    當條件判斷式1成立時,執行程式1

 elif  [  條件判斷式2  ]

    當條件判斷式2成立時,執行程式2

……更多條件……

else

  當所有條件都不成立時,最後執行此程式

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

五、多分支 case 條件語句

case 語句和 if…elif…else語句一樣都是多分支條件語句,不過和 if 多分支條件語句不同的是,case 語句隻能判斷一種條件關系,而 if 語句可以判斷多種條件關系。

case  $變量名 in

  “值1”)

    如果變量的值等于值1,則執行程式1

    ;;

  

  “值2”)

    如果變量的值等于值2,則執行程式2

  … 省略其它分支 …

  *)

    如果變量的值都不是以上的值,則執行此程式

;;

esac

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

注:傾向于做選擇清單

六、for 循環

for  變量  in 值1  值2  值3

  do

    程式

  done

簡單 for 循環

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

 七、批量添加删除指定數量的使用者

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

添加使用者

Linux _ Day9 Shell程式設計之條件判斷與流程控制
Linux _ Day9 Shell程式設計之條件判斷與流程控制

删除使用者

Linux _ Day9 Shell程式設計之條件判斷與流程控制

八、while循環和until循環

while循環是不定循環,也稱作條件循環。隻要條件判斷式成立,循環就會一直繼續,直到條件判斷式不成立,循環才會停止。這就和for的固定循環不太一樣了。

while  [  條件判斷式  ]

Linux _ Day9 Shell程式設計之條件判斷與流程控制

until循環,和while循環相反,until循環時隻要條件判斷式不成立則進行循環,并執行循環程式。一旦循環條件成立,則終止循環。

until  [  條件判斷式  ]

Linux _ Day9 Shell程式設計之條件判斷與流程控制

繼續閱讀