一 條件測試
1.類型
文件測試、數值比較、字符串比較
2.小程序
if ! test -d $1;then #測試參數1是否是目錄 mkdir $1 #不是目錄則創建目錄 fi
if [ ! -d $1 ]; then #和上面含義相同 mkdir $1
fi
#test 命令 相當於 [ ] 命令
if [ $UID -ne 0];then #判斷用戶權限是否等於0 echo "no permission" exit fi if [$USER != "root"];then #判斷用戶是否是root echo "no permission" exit fi
通過man test 去查看所有判斷選項
3.字符串比較
提示:使用雙引號
["$USER" = "root"]; echo $?
["$USER" == "root"]; echo $?
[-z "$damon"] 字符長度是0
[-n "$damon"] 字符長度不是0
例子:
damon@ubuntu:~$ v1= damon@ubuntu:~$ [ -z $v1 ];echo $? 0 damon@ubuntu:~$ [ -n $v1 ];echo $? 0 damon@ubuntu:~$ [ -n "$v1" ];echo $? 1 damon@ubuntu:~$
可以看出字符串變量是否加雙引號的結果是不一樣的,加雙引號的結果是正確的!
4.數值比較
root@ubuntu:/# [ 1 -lt 2 -a 5 -gt 10 ];echo $? 1 root@ubuntu:/# [ 1 -lt 2 -o 5 -gt 10 ];echo $? 0 root@ubuntu:/# [[ 1 -lt 2 && 5 -gt 10 ]];echo $? 1 root@ubuntu:/# [[ 1 -lt 2 || 5 -gt 10 ]];echo $? 0
5.If
#!/usr/bin/bash cat <<-EOF ########################### # A.Ross # # B.Chandler # # C.Joey # # D.Richel # # E.Fibe # # F.Monica # ########################### EOF read -p "Which person do you like best: " name if [ "$name" == "A" ];then echo "Ross" elif [ "$name" == "B" ];then echo "Chandler" elif [ "$name" == "C" ];then echo "Joey" elif [ "$name" == "D" ];then echo "Richel" elif [ "$name" == "E" ];then echo "Fibe" elif [ "$name" == "F" ]; then echo "Monica" else echo "Unknown name" fi
6.模式匹配:case
case只能進行字符串匹配
case 變量 in
模式1)
命令序列1
;;
模式2)
命令序列3
;;
*)
無匹配後命令序列
esac
例子:
#!/usr/bin/bash cat <<-EOF ########################### # A.Ross # # B.Chandler # # C.Joey # # D.Richel # # E.Fibe # # F.Monica # ########################### EOF read -p "Which person do you like best: " name case "$name" in A|a) echo "Ross" ;; B|b) echo "Chandler" ;; C|c) echo "Joey" ;; D|d) echo "Richel" ;; E|e) echo "Fibe" ;; F|f) echo "Monica" ;; *) echo "Unknown name" ;; esac
二 循環
1.for
for 變量名 [in 取值列表]
do
循環體
done
for i in `seq 4` do echo i done
2.while
while 條件
do
循環體
done
#!/bin/bash i=1 while [ $i -le 4 ] do echo "$i" i=$[$i+1] done