1. 程式人生 > 實用技巧 >計算1-數值計算命令和案例

計算1-數值計算命令和案例

一、變數數值計算符號和命令

1. 常見算數運算子

符號說明
+、-加號、減號
*、/、%乘法、觸法、取餘
**冥運算
++、--增減、減少
!、&&、||邏輯非(取反)、邏輯與(and)、邏輯或(or)
<、<=、>、>=比較符號(小於、大於)
==、!=、=比較符號(相等、不相等、相當於)
<<、>>向左移位、向右移位
~、|、&、^按位取反、異或、與、或
=、+=、-=、*=、/+、%=賦值運算(a+=1相當於a=a+1)

2. 常見算數運算命令

符號說明
(())用於整數運算的常用運算子,效率很高
let用於整數運算,類似於"(())"
expr可用於整數運算,還有很多其他功能
bclinux下的計算器程式,適合整數及小數
$[]用於整數運算
awkawk既可用於整數,也可以用於小數運算
declare定義變數值和屬性,-i引數可以用於定義整形變數,做運算

二、計算實踐

1. 雙小括號

1) 常規用法

符號說明
((i=i++))先賦值後運算
((i=++i))先運算後賦值
i=$((i+1))運算後賦值給變數i
((a>7&&b<5))進行比較操作,還可以做條件判斷
echo $((2+1))世界輸出表達式的結果

++、-- 運算的記憶方法:

i=i++表示先對i賦值,然後進行自加運算,即實際的i值比輸出的i值大
i=++i表示先進行自加運算,在對i賦值,即實際的i和輸出的i一樣

2) i++和++i測試

  • i=6;echo $((i++));echo $i
6
7
  • i=6;echo $((++i));echo $i
7
7

2.其他計算命令

1) let 賦值表示式

let i=i+2等同於((i=i+2))

2) bc計算命令

bc是linux下的計算機,常常用配合管道進行計算,可以進行小數運算

echo "1+9"|bc
i=5;i=`echo $i+6|bc`

3) awk做算數運算

可以進行小數、整數的運算,很好用
echo "7.7 9.8"|awk '{print ($1+$2),($1*$2)}'

17.5 75.46

4) $[] 做運算

echo $[4+2] $[4*2] $[4**2]

6 8 16

三、案例

1.實現輸出1+2+3..+10=55的計算和輸出

  • 方法1:
echo `seq -s "+" 10`=`seq -s + 10|bc`

1+2+3+4+5+6+7+8+9+10=55

  • 方法2:
echo `echo {1..10}|tr " " "+"`=`echo {1..10}|tr " " "+"|bc`

1+2+3+4+5+6+7+8+9+10=55

  • 方法3:expr
echo `seq -s + 10`=`seq -s " + " 10|xargs expr`

1+2+3+4+5+6+7+8+9+10=55

  • 方法4:(())
echo `seq -s + 10`=$((`seq -s + 10`))  

1+2+3+4+5+6+7+8+9+10=55

2.read命令讀取引數

1) read命令基礎

  • 語法:read [引數] [變數名]
    -p 設定提示資訊
    -t 設定輸入等待時間(秒)
    read -t 10 -p "input tow num:" a b

input tow num:1 2
設定10秒超時,提示語為**

2) 計算指令碼演示

  • cat /server/scripts/t.sh
#!/bin/bash
read -p "num1:" a
read -p "num2:" b
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a**b=$(($a**$b))"

做到允許指令碼後,分別提示輸入兩個字串的功能

3) 指令碼增加判斷整數語句

  • cat /server/scripts/t.sh
#!/bin/bash
#no.1
read -p "num1:" a
expr $a + 0 &>/dev/null
[ $? -ne 0 ] && {
    echo "pls int"
    exit 1
}
#no.2
read -p "num2:" b
expr $b + 0 &>/dev/null
[ $? -ne 0 ] && {
    echo "pls int"
    exit 2
}
#no.3
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a**b=$(($a**$b))"

達到每輸入一個字串,驗證是否為整數,不是整數則提示並退出,兩個都是整數後,則進行計算