日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell脚本——数字计算

發布時間:2025/3/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell脚本——数字计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shell 和其它編程語言不同,Shell 不能直接進行算數運算,必須使用數學計算命令

要想讓數學計算發揮作用,必須使用數學計算命令,Shell 中常用的數學計算命令如下表所示。

運算操作符/運算命令說明
(( ))用于整數運算,效率很高,推薦使用
let用于整數運算,和 (()) 類似。
[$]用于整數運算,不如 (()) 靈活。
expr可用于整數運算,也可以處理字符串。比較麻煩,需要注意各種細節,不推薦使用。
bcLinux下的一個計算器程序,可以處理整數和小數。Shell 本身只支持整數運算,想計算小數就得使用 bc 這個外部的計算器。
declare -i將變量定義為整數,然后再進行數學運算時就不會被當做字符串了。功能有限,僅支持最基本的數學運算(加減乘除和取余),不支持邏輯運算、自增自減等,所以在實際開發中很少使用。

一、Shell (( )) 的用法

雙小括號 (( )) 的語法格式為:

((表達式))

通俗地講,就是將數學運算表達式放在((和))之間。

表達式可以只有一個,也可以有多個,多個表達式之間以逗號,分隔。對于多個表達式的情況,以最后一個表達式的值作為整個 (( )) 命令的執行結果。

可以使用$獲取 (( )) 命令的結果,這和使用$獲得變量值是類似的。

運算操作符/運算命令說明
((a=10+66) ((b=a-15)) ((c=a+b))這種寫法可以在計算完成后給變量賦值。以 ((b=a-15)) 為例,即將 a-15 的運算結果賦值給變量 c。 注意,使用變量時不用加$前綴,(( )) 會自動解析變量名。
a=((10+66)b=((10+66) b=((10+66)b=((a-15)) c=$((a+b))可以在 (( )) 前面加上$符號獲取 (( )) 命令的執行結果,也即獲取整個表達式的值。以 c=((a+b))為例,即將a+b這個表達式的運算結果賦值給變量c。注意,類似c=((a+b))這樣的寫法是錯誤的,不加‘((a+b)) 為例,即將 a+b 這個表達式的運算結果賦值給變量 c。 注意,類似 c=((a+b)) 這樣的寫法是錯誤的,不加`((a+b))a+bcc=((a+b))`就不能取得表達式的結果。
((a>7 && b==c))(( )) 也可以進行邏輯運算,在 if 語句中常會使用邏輯運算。
echo $((a+10))需要立即輸出表達式的運算結果時,可以在 (( )) 前面加$符號。
((a=3+5, b=a+10))對多個表達式同時進行計算。

在 (( )) 中使用變量無需加上$前綴,(( )) 會自動解析變量名,這使得代碼更加簡潔,也符合程序員的書寫習慣。

二、Shell let命令:對整數進行數學運算

let 命令和雙小括號 (( )) 的用法是類似的,它們都是用來對整數進行運算,讀者已經學習了《Shell (())》,再學習 let 命令就相當簡單了。

注意:和雙小括號 (( )) 一樣,let 命令也只能進行整數運算,不能對小數(浮點數)或者字符串進行運算。

Shell let 命令的語法格式為:

let 表達式 或者 let "表達式" 或者 let '表達式'

它們都等價于((表達式))。

當表達式中含有 Shell 特殊字符(例如 |)時,需要用雙引號" "或者單引號' '將表達式包圍起來。

和 (( )) 類似,let 命令也支持一次性計算多個表達式,并且以最后一個表達式的值作為整個 let 命令的執行結果。但是,對于多個表達式之間的分隔符,let 和 (( )) 是有區別的:

  • let 命令以空格來分隔多個表達式;
  • (( )) 以逗號,來分隔多個表達式。

另外還要注意,對于類似let x+y這樣的寫法,Shell 雖然計算了 x+y 的值,但卻將結果丟棄;若不想這樣,可以使用let sum=x+y將 x+y 的結果保存在變量 sum 中。

這種情況下 (( )) 顯然更加靈活,可以使用$((x+y))來獲取 x+y 的結果。請看下面的例子:

[c.biancheng.net]$ a=10 b=20 [c.biancheng.net]$ echo $((a+b)) 30 [c.biancheng.net]$ echo let a+b #錯誤,echo會把 let a+b作為一個字符串輸出 let a+b

總結

以上是生活随笔為你收集整理的Shell脚本——数字计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。