Shell腳本學習(2)

一 條件測試

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章