一、條件判斷式語句
兩種判斷格式
(1):[root@localhost ~]# test -e /root/install.log
注:echo $? 證明上一條指令執行
(2):[root@localhost ~]# [ -e /root/install.log ]

注:第一個判斷指令如果正确執行,則列印“yes“,否則列印”no“。
注:中括号兩邊加上空格。
(1):[root@localhost ~]# [ -w cjj.txt ] && echo "yes" || echo "no"
# 判斷檔案是否擁有寫權限
[root@localhost ~]# ln /root/cjj.txt /tmp/stu.txt
# 建立個硬連接配接
[root@localhost ~]# [ /root/cjj.txt -ef /home/stu.txt ] && echo "yes" || echo "no"
# 檢視兩個檔案是不是硬連接配接,inode号相同
[root@localhost ~]# [ 23 -ge 22] && echo "yes" || echo "no"
# 判斷23是否大于等于22,當然是啦。
[root@localhost ~]# [ 23 -le 22] && echo "yes" || echo "no"
# 判斷23是否大于等于22,當然不是。
(1):[root@localhost ~]# name=cjj
# 給name變量指派
[root@localhost ~]# [ -z "$name" ] && echo "yes" || echo "no"
no
# 判斷name變量是否為空,因為不能為空,是以傳回no
[root@localhost ~]# name=“” 時
(2):aa=11
bb=22
# 給變量aa和bb指派
[root@localhost ~]# [ "$aa" == "bb" ] && echo "yes" || echo "no"
# 判斷兩個變量的值是否相等,明顯相等,是以傳回no
注:"aa" "bb" 既是字元串也是整數,可以用 = 也可以用 == ,建議用 ==
[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 後面跟符合條件之後執行的程式,可以放在 [ ] 之後,用" ; "分割.也可以換行寫入,就不需要" ; "了
三、雙分支 if 條件語句
條件成立時,執行的程式
else
條件不成立時,執行的另一個程式
例子:判斷apache服務是不是在運作
注:提取含有httpd的行,剔除含有grep的行。
注:給腳本起名時要避開httpd這個關鍵字,不然會一直檢測到有httpd服務程序
四、多分支if語句
if [ 條件判斷式1 ]
當條件判斷式1成立時,執行程式1
elif [ 條件判斷式2 ]
當條件判斷式2成立時,執行程式2
……更多條件……
else
當所有條件都不成立時,最後執行此程式
五、多分支 case 條件語句
case 語句和 if…elif…else語句一樣都是多分支條件語句,不過和 if 多分支條件語句不同的是,case 語句隻能判斷一種條件關系,而 if 語句可以判斷多種條件關系。
case $變量名 in
“值1”)
如果變量的值等于值1,則執行程式1
;;
“值2”)
如果變量的值等于值2,則執行程式2
… 省略其它分支 …
*)
如果變量的值都不是以上的值,則執行此程式
;;
esac
注:傾向于做選擇清單
六、for 循環
for 變量 in 值1 值2 值3
do
程式
done
簡單 for 循環
七、批量添加删除指定數量的使用者
添加使用者
删除使用者
八、while循環和until循環
while循環是不定循環,也稱作條件循環。隻要條件判斷式成立,循環就會一直繼續,直到條件判斷式不成立,循環才會停止。這就和for的固定循環不太一樣了。
while [ 條件判斷式 ]
until循環,和while循環相反,until循環時隻要條件判斷式不成立則進行循環,并執行循環程式。一旦循環條件成立,則終止循環。
until [ 條件判斷式 ]