本篇主要寫一些 腳本條件語句的使用。 條件測試 test 條件表達式 [ 條件表達式 ] 文件測試 :測試是否為目錄(Directory)。 :測試文件或目錄是否存在(Exist)。 :測試是否為文件(File)。 :測試當前用戶是否有許可權讀取(Read)。 :測試當前用戶是否有許可權寫入(Write ...
本篇主要寫一些shell
腳本條件語句的使用。
條件測試
test 條件表達式
[ 條件表達式 ]
文件測試
-d
:測試是否為目錄(Directory)。
-e
:測試文件或目錄是否存在(Exist)。
-f
:測試是否為文件(File)。
-r
:測試當前用戶是否有許可權讀取(Read)。
-w
:測試當前用戶是否有許可權寫入(Write)。
-x
:測試是否設置有可執行許可權(Excute)。
-nt
:判斷文件A
是否比文件B
新。
-ot
:判斷文件A
是否比文件B
舊。
-ef
:判斷兩個文件是否為同一個文件,用來判斷兩個文件是否指向同一個inode
。
[root@localhost ~]# test -d /etc/ && echo $?
0
[root@localhost ~]# ls test.txt
ls: cannot access test.txt: No such file or directory
[root@localhost ~]# [ ! -e test.txt ] && touch test.txt
[root@localhost ~]# ls test.txt
test.txt
整數值比較
- [ 整數1 操作符 整數2 ]
-eq
:等於(Equal)
-ne
:不等於(Not Equal)
-gt
:大於(Greater Than)
-lt
:小於(Lesser Than)
-le
:小於等於(Lesser or Equal)
-ge
:大於等於(Greater or Equal)
[root@localhost ~]# history | wc -l
294
[root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too many
[root@localhost ~]# history -c
[root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too few
字元串比較
=
:第一個字元串與第二個字元串相同
!=
:第一個字元串與第二個字元串不相同
-z
:檢查字元串是否為空,對於未定義或賦予空值的變數視為空串
邏輯測試
&&
:邏輯與,表示而且
,使用test
命令測試時,可改為-a
。
||
:邏輯或,表示或者
使用test
命令測試時,可改為-o
。
!
:邏輯否,表示不
if 單分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "請輸入成績:" score
if [ $score -ge 60 ]
then
echo "成績合格"
fi
[root@localhost ~]# chmod +x score.sh
[root@localhost ~]# ./score.sh
請輸入成績:80
成績合格
[root@localhost ~]# ./score.sh
請輸入成績:40
if 雙分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "請輸入成績:" score
if [ $score -ge 60 ]
then
echo "成績合格"
else
echo "成績不合格"
fi
[root@localhost ~]# ./score.sh
請輸入成績:80
成績合格
[root@localhost ~]# ./score.sh
請輸入成績:40
成績不合格
if 多分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "請輸入成績:" score
if [ $score -ge 90 ]
then
echo "成績優秀"
elif [ $score -ge 60 ]
then
echo "成績合格"
else
echo "成績不合格"
fi
[root@localhost ~]# ./score.sh
請輸入成績:90
成績優秀
[root@localhost ~]# ./score.sh
請輸入成績:80
成績合格
[root@localhost ~]# ./score.sh
請輸入成績:40
成績不合格
[root@localhost ~]# vim run.sh
if 嵌套
#!/bin/bash
read -p "請輸入時間:" time
if [ $time -le 10 ]
then
echo "您已進入決賽"
read -p "請輸入性別(man/woman)" sex
if [ $sex = "man" ]
then
echo "您被分到男子組"
else
echo "您被分到女子組"
fi
else
echo "抱歉,您被淘汰"
fi
[root@localhost ~]# chmod +x run.sh
[root@localhost ~]# ./run.sh
請輸入時間:9
您已進入決賽
請輸入性別(man/woman)man
您被分到男子組
[root@localhost ~]# ./run.sh
請輸入時間:9
您已進入決賽
請輸入性別(man/woman)woman
您被分到女子組
[root@localhost ~]# ./run.sh
請輸入時間:11
抱歉,您被淘汰