$((...)) —— 最推薦Bash 內建語法,支援 C 風格表達式,效率最高:
b=$((5*5+5-3/2))
echo $b # 輸出 29
優點:無需外部進程、支援變量直接引用($a+$b)、支援位運算、邏輯運算。
expr 命令 —— 經典外部命令expr 5 - 4 # 輸出 1
expr 5 \* 4 # 乘法需轉義
注意:操作數與運算符之間必須有空格,否則報錯。僅支援整數。
let / declare -i —— 變量屬性聲明let "a = 5 + 3"
declare -i b=10*2
| 類別 | 語法 | 說明 |
|---|---|---|
| 邏輯 | expr1 \| expr2 | expr1 非零/非空返回 expr1,否則 expr2 |
| expr1 & expr2 | 兩者皆非零/非空返回 expr1,否則 0 | |
| 算術 | expr1 + expr2 | 加法 |
| expr1 - expr2 | 減法 | |
| expr1 \* expr2 | 乘法(需轉義) | |
| expr1 / expr2 | 整除 | |
| expr1 % expr2 | 取模 | |
| 比較 | expr1 > expr2 | 大於返回 1,否則 0(數字比大小,字符串比字典序) |
| expr1 < expr2 | 小於 | |
| expr1 = expr2 | 等於 | |
| expr1 != expr2 | 不等於 | |
| expr1 >= expr2 | 大於等於 | |
| expr1 <= expr2 | 小於等於 | |
| 字符串 | expr1 : expr2 | 正則匹配,返回匹配長度;帶 \(\) 返回捕獲組 |
直接使用 $((5.0-4)) 或 expr 5.0 - 4 均會報錯。
bc —— 精確計算器c=$(echo "5.01-4*2.0" | bc)
echo $c # -2.99
# 支援 scale 控制精度
echo "scale=2; 10/3" | bc # 3.33
awk —— 文本處理順便算數c=$(awk 'BEGIN{print 7.01*5-4.01}')
echo $c # 31.04
perl / python —— 腳本語言一行命令perl -e 'print 3.14*2'
python -c 'print(3.14*2)'
$((...)),性能最好、語法最清晰bc(精度可控)或 awk(管道流處理中便利)$() 與反引號 `` 效果相同,推薦前者(可嵌套、可讀性強)Linux 顯卡驅動安裝實戰:NVIDIA/AMD/Intel 全流程指南
CentOS 部署 Jekyll 靜態博客:Ruby 環境、Nginx 配置、中文編碼與 Markdown 引擎優化
Shell 程式設計速查筆記:檔案測試、字串比較、數值運算、for 迴圈、sed 進階模式
vsftpd 500 OOPS: cannot change directory 錯誤秒解:SELinux 布林值一鍵修復
CentOS 編譯安裝 Apache HTTPD 2.4 完整教程:APR/APR-Util/PCRE 依賴鏈、configure 參數、目錄佈局