1. 程式人生 > >02 數據運算/條件測試

02 數據運算/條件測試

邏輯或 exp less 邏輯判斷 字符 not 等於 ++ 識別

一.整數運算工具 1.使用expr命令(運算兩邊必須有空格,引用變量時必須加$符號) [root@svr5 ~]# x=10 //定義變量x expr $x + 10 20 //加 (每個之間都要空格) expr $x - 10 0 //減 expr $x \* 10 100 //乘 expr $x / 10 1 //除 (僅保留整數結果) expr $x % 10 0 //求模 2.使用$[]或$(())表達式 乘法操作*無需轉義,運算符兩側可以無空格;引用變量可省略 $ 符號;計算結果替換表達式本身,可結合echo命令輸出。同樣對於變量x=10: [root@svr5 ~]# x=10 //定義變量x echo $[x+10] 20 echo $[x-10] 0 echo $[x*10] 100 echo $[x/10] 1 echo $((x%10)) 0 3.使用let命令(更改變量的值) [root@svr5 ~]# x=10 //定義變量x let y=x+10; echo $y=20 let x++; echo $x=11 let x--; echo $x=10 let x+=10; echo $x=20 let x-=10; echo $x=10 let x*=10; echo $x=100 let x/=10; echo $x=10 let x%=10; echo $x=0 二.小數運算工具 1.bc進入交互環境計算加減乘除 2.bc非交互式運算 echo ‘scale=4;12.345+67.891011‘ | bc echo ‘scale=2;12.34-56.78‘ | bc echo ‘scale=3;12.345*56.789‘ | bc echo ‘scale=1;12.345/56.789‘ |bc 小數的比較: > >= < <= = != 三.條件測試 1.比較兩個字符串是否相同 [ $USRE == "root" ];echo $? 0 (root用戶) [ $USER == "zhangsan" ];echo $? 非0 (root用戶) 2.比較兩個字符串是否不同 root下:[ $USER != "root" ];echo $? 1 非root:[ $USER != "root" ];echo $? 0 3.一條執行多條命令的情況 A && B :A成功,才執行B命令 A || B :A失敗,才執行B命令 A;B :依次執行,互不影響 A && B || C :如果A則B否則C 4.字符串的值為空/不為空 [ -z "" ] [ -n "str" ] var1="str";var2="" [ -z "$var1" ] && echo "為空" || echo "不為空" [ -n "$var2" ] && echo "不為空" || echo "為空" [ -! -z "$var2" ] && echo "不為空" || echo "為空" 5.整數值的比較 -eq 是否相等 (equal) -ne 是否不相等 (not equle) -gt 是否大於 (greater than) -ge 是否大於等於 (greater or equal) -lt 小於 (lesser than) -le 小於等於 (lesser equal) [root@svr5 ~]# x=20 [ $x -le 10 ] && echo "小於或等於" || echo "大於" ---大於 提取當前登陸用戶數,判斷是否大於3 n=$(who | wc -l);[ $n -ge 3 ] && ehco "大於等於3" || echo "小於3" 簡化:[ $(who | wc -l) -ge 3 ] $$ echo "大於等於3" || echo "小於3" 6.識別文件/目錄的狀態 1> -e 判斷是否存在,不管是目錄還是文件 [ -e "/zhangsan/" ] && echo "存在" || echo "不存在" 2> -d 判斷對象是否為目錄(存在且是目錄) [ -d "/opt/" ] && echo "是目錄" || echo "不是目錄" [ -d "/opt/1.txt/" ] && echo "是目錄" || echo "不是目錄" 3> -f 對象是否是文件(存在且是文件) 4> -r 判斷對象是否可讀(文件,非root用戶) 5> -w 判斷對象是否可寫(文件,非root用戶) 6> -x 判斷對象是否可執行 7.復合邏輯判斷 1> 邏輯與 && 都成立為真 [root@svr5 ~]# x=10 //設置x變量的值為10 [ $x -ge 5 ] && [ $USER == "root" ] && echo "true" || echo "false" 2> 邏輯或 || 有一個真則為真 [ $x -ge 30 ] || [ $USER == "zhangsan" ] && echo "true" || echo "false" [ $x -ge 10 ] || [ $USER == "zhangsan" ] && echo "true" || echo "false" 四.if選擇結構 編寫三個腳本: 檢測/media/cdrom目錄,若不存在則創建 檢測並判斷指定的主機是否可ping通 從鍵盤讀取一個論壇積分,判斷論壇用戶等級,等級分類如下: 大於等於90 神功絕世
大於等於80,小於90 登峰造極 大於等於70,小於80 爐火純青 大於等於60,小於70 略有小成 小於60 初學乍練

02 數據運算/條件測試