shell 裡面的計算

2022-08-19 09:27:10 字數 2726 閱讀 7882

---恢復內容開始---

關於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,我們可以通關上面的這個方法,判斷其型別,然後獲取其結果!比如...