---恢復內容開始---
關於shell裡面的計算其實早在接觸linux的時候就已經接觸到了。每次在運用的時候卻是在網上到處找,所以覺得花點時間好好研究下。
首先了解下常用的算數運算符號:
+ -
加法(正號),減法(
負號)
乘法,除法,取餘
冪運算增加或者減少,可前置也可放在變數結尾
邏輯非(取反)。邏輯與(and),
邏輯或(or)
小於,小於等於 大於 大於等於
比較符號(相等。不相等。 對於字串=
也是等於號)
向左移位,向右移位
安位取反 按位異或 按位與 按位或
賦值運算子例如 a+=1
就是a=a+1
常用的算數運算命令如下
運算操作與運算命令
意義用於證書運算的常用運算子,效率很高
let用於證書運算,
類似於『(())』
expr
可用於整數運算,但還有很多其他額外的功能
bclinux下的乙個運算程式(數和證書和小數運算)
用於整數運算
awkawk既可以用於證書運算
,也可以用於小數運算
declare
定義變數和屬性,-i
引數可以用於定義整形變數
,做運算/
一:雙小括號的運算實踐
1.1利用(())進行簡單的計算((i=i+1))表示把i+1的結果賦給i,但是如果要引用結果的話,不知能echo ((i=1+1))必須要加上$符號 echo $((i=1+1))
1.2 利用(())雙括號進行比較以及判斷
這裡的 1 表示真,0表示假
可以和邏輯運算一起。
注意:上面涉及的數字以及變數必須為整數(整形),不能是小數或者字串
1.3 --,++的用法
舉個最簡單的例子:
++a表示輸出計算後的數,a++表示輸出的是a的值
1.4 (())的賦值運算
這裡需要注意的是 (())裡面引用變數可以不加$ (當然也可以加,我習慣加)
(())裡面所有字元之間沒有空格,有乙個或者多個不會影響結果。let命令和(())功能相同但是效率較低這裡就不說了
二 expr命令的用法
expr既可以用於整數計算,也可以用於字串的長度,匹配的運算處理。
2.1用於計算
2.2 用於字串,expr判斷字串是否是整數。由於函式庫比較少,所以判斷字串是否為整數是乙個比較難的事情。實現原理,比乙個字串和1相加,檢視返回值,如果返回值是0,那麼這個數就是整數
注意,使用expr 後面計算符號前後必須有空格!!
也可以使用match來匹配如下:
expr的特殊用法,判斷檔名是否滿足要求!
計算字串的長度
awk 實現計算!
用awk實現計算的乙個非常好的方法,特別是小數
我們上面的都是直接用$i 來引用,也可以用declare(同typeset)來定義 然後直接使用
這樣用的比較少
$符號的運算
以上就是我們常用的運算!!下面有幾個例項
寫乙個指令碼,完成輸入兩個數,判斷這兩個數是否為整數,如果是整數,完成相加並且輸出結果,如果不是則給出相應的提示
#---恢復內容結束---!/bin/bash
read -t 15 -p "
please input two num:
"a b
[ $ -le 0 ] &&
[ $ -le 0 ] &&
expr $a + 1 &> /dev/null
retval_a=$?
expr $b + 1 &> /dev/null
retval_b=$?
if [ $retval_a -ne 0 -o $retval_b -ne 0 ] ;then
echo
"one of the num is not num ,pls input again
"exit 1fi
shell裡面的test用法
今天自己看linux下面的好多指令碼檔案,發現很多if語句,然後就是條件判斷。看的時候發現自己對那些條件都不是熟記於心,所以自己就去找了test用法,然後記錄到自己的部落格裡面!關於某個檔名的 型別 偵測 存在與否 如 test e filename e 該 檔名 是否存在?常用 f 該 檔名 是否...
struct裡面的sizeof計算總結
struct 裡面的sizeof的計算 如struct exap short a double b char c double d int e size sizeof struct exap 40 秘訣 方法一 short只能存在2的倍數裡面 double只能存在8的背書裡面 char只能存在1的倍...
C NPOI計算Execl裡面的公式
我們通過npoi,獲取列的屬性 private static object getvaluetype icell cell 我們在獲取execl的檔案物件的之後,通過npoi元件獲取任意sheet下面的row和cell,我們在獲取cell,我們可以通關上面的這個方法,判斷其型別,然後獲取其結果!比如...