條件測驗、if多分支陳述句
- 一、條件測驗操作
- test命令(后面的都是在此基礎上)
- 檔案測驗
- 常用的測驗運算子
- 整數值比較
- 常用的測驗運算子
- 字串比較
- 常用的測驗運算子
- 邏輯測驗
- 常用的測驗運算子
- 未完待續
一、條件測驗操作
test命令(后面的都是在此基礎上)
測驗運算式是否成立,若成立回傳0,否則回傳其他數值
格式1: test 條件運算式
格式2: [ 條件運算式 ] (中括號兩邊要有空格)
檔案測驗
[ 運算子 檔案或目錄 ]
常用的測驗運算子
-d:測驗是否為目錄(Directory)
-e:測驗目錄或檔案是否存在(Exist)
-f:測驗是否為檔案(File)
-r:測驗當前用戶是否有權限讀取(Read)
-w:測驗當前用戶是否有權限寫入(Write)
-x:測驗當前用戶是否有權限執行(excute)


整數值比較
[ 整數1 運算子 整數2 ]
常用的測驗運算子
-eq:等F(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)


bash不支持浮點運算,如果需要進行浮點運算,需要借助bc,awk處理,
#!/bin/bash
#加
f=$ (echo "4.3+2.5"|bc)
echo "4.3+2.5=$f"
#減
f=$ (echo "4.3-2.5"|bc)
echo "4.3-2.5=$f"
#乘
f=$(echo "4.30*2.50"|bc)
echo "4.3*2.5=$f"
#除
f=$(echo "4.3/2.5"|bc)
echo "4.3/2.5=$f"
#混合運算
f=$(echo "2.2/(2.2-1.1)*2+1.1"|bc)
echo "2.2/(2.2-1.1) *2+1.1=$f"
BEGIN
#加
f=$(awk 'BEGIN{print 4.5+3.4 }')
echo "4.5+3.4"=$f
減
f=$ (awk 'BEGIN{print 4.5-3.4 }')
echo "4.5-3.4=$f"
乘
f=$ (awk 'BEGIN{print 4.5*3.4 }')
echo "4.5*3.4=$f"
除
f=$ (awk 'BEGIN{print 4.5/3.4 )')
echo "4.5/3.4=$f"
混合
f=$(awk 'BEGIN{print (4.5-3.4)*2+3 }')
echo " (4.5-3.4) *2+3=$f"


字串比較
格式1:[ 字串1 = 字串2 ]
[ 字串1 != 字串2 ]
格式2: [ -z 字符 ]
常用的測驗運算子
=:字串內容相同
!=:字串內容不同, !號表示相反的意思
-z:字串內容為空
-n :檢測字串是否存在
#此處幫我@思聰




邏輯測驗
格式1: [ 運算式1 ] 運算子 [ 運算式2 ]
格式2:命令1 運算子 命令2
常用的測驗運算子
a或&&:邏輯與, "而且"的意思
-0或||:邏輯或, "或者"的意思
!:邏輯否
同一個括號內用-a或-o
兩個括號間用&& 或||
&&、||運算子能夠正常存在于[[ ]]條件判斷結構中,但是如果出現在[]結構中的話,會報錯
a=5
[ $a -ne 1] && [$a !=2 ]等同于 [ $a -ne 1 -a $a != 2 ]
[[ $a != 1 && $a != 2]]
[[ 2 -lt 3]] && echo true || false
[[ 2 -ge 3]] && echo true || false

vim pinghost.sh
#!/bin/bash
ping -c 3 -i 0.5 -W 2 $1 &> /dev/null && echo "$1 online" || echo "$1 off"
-c:發送包的個數
-i:發送包測間隔時間
-w:超時時間
發三個包間隔0.5秒未超時就輸出IP在線;2秒超時后就丟盡黑洞并且輸出IP關閉

未完待續
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/236009.html
標籤:其他
