bash的數值運算

2021-07-24 12:05:29 字數 1390 閱讀 8670

在shell中,變數的預設型別是字串型別,而字串型別是不能進行數值運算的,所以shell提供了兩種方式來實現數值運算。

1. 用declare命令顯式地宣告變數的型別。

2. 用expr/let數值運算工具或著特殊書寫格式來完成shell中的數值運算。

一、declare命令介紹

目的:顯式地宣告變數的型別

格式:declare +/-選項 變數名。

其中-表示給變數設定型別屬性,+表示給變數取消型別屬性。

選項有:

a 表示陣列型

i 表示整型,

p 表示檢視變數型別的屬性

r 表示設定變數為唯讀

舉例:

1. 定義變數val為陣列型: declare -a val,我們可以通過val[0]=1來講陣列變數val的第乙個元素賦值為1。我們也可以通過val=(0 1 2 3 4 5 6 7)為val陣列一次性賦值8個元素。我們用$來檢視陣列中的元素,如果省略下標,將檢視到的是陣列第乙個元素的值,若下標用*代替,則檢視陣列變數中的所有元素。

2. 定義變數val為整型: declare -i val,只有將val定義成了整型,儲存的值才是數值運算後的結果。例如 declare -i val=1+2,這裡val中的值將是3,如果不寫 declare -i,而直接寫val=1+2,val中的值將是」1+2」。

3. 定義變數val為環境變數: declare -x val,它的效果等同於 export val。

4. 檢視val的型別屬性: declare -p val, 它會告訴你val的型別為何。

5. 設定變數val為唯讀:declare -r val。這個要慎用,設定val為唯讀後,不能對其進行任何操作,包括取消型別屬性,所以val將常駐當前shell,直到其退出,變數自動釋放。

二、利用特殊工具或特殊書寫格式來進行數值運算

1. 數值運算工具: expr/let

expr用法格式:變數名= expr 變數1 運算子 變數2,等號左邊不能有空格, expr兩邊必須有空格 運算子兩邊必須有空格。比如:val= expr 1 + 2,val中的值將是3。

let用法格式:let 變數名=變數1運算子變數2,等號兩邊,運算子兩邊不能有空格。比如:let val=1+2, val中的值將是3。

2. 特殊格式

格式如下:val=\$((1+2)),將運算的變數用雙括號括起來,可以達到算數運算的效果,請記住需要在雙括號外加上\$符號用於取運算後的值,並將值賦予變數val。

總結:因為shell預設的型別是字串型,而字串型別是不能進行數學意義上的數值運算,所以我們可以通過1. 利用declare命令將變數型別顯式定義為整型進而對其進行數值運算。2. 可以通過expr/let工具和雙括號來實現數值運算。

若有不對之處,敬請指正。

bash中的數值運算

第一種,使用 表示式 a 3 b a 2 echo b第二種使用let let c a 4 echo c 第三種,使用expr表示式 注意空格不能少 注意空格和反引號 d expr 4 3 echo d第四種,比較常用,就是放在 expression 中,其實這才是bash的推薦的標準處理方法 a ...

bash中的數值運算

第一種,使用 表示式 a 3 b a 2 echo b第二種使用let let c a 4 echo c第三種,使用expr表示式 注意空格不能少 注意空格和反引號 d expr 4 3 echo d第四種,比較常用,就是放在 expression 中,其實這才是bash的推薦的標準處理方法 a 4...

10 5 1 Bash變數 數值運算與運算子

aa 11 bb 22 cc aa bb echo cc 11 22 root localhost declare 選項 變數名 選項 給變數設定型別屬性 取消變數的型別屬性 i 將變數宣告為整數型 integer x 將變數宣告為環境變數 p 顯示指定變數的被宣告的型別 aa 11 bb 22 d...