上篇我們學會瞭如何使用及定義變數。按照尿性,一般接下來就該學基本數據類型的運算了。 沒錯,本篇就仍是這麼俗套的來講講這無聊但又必學的基本數據類型的運算了。 基本數據類型運算 操作符 符號 | 語義 | 描述 | | + | 加 | 10+10,結果為20 | 減 | 10 3, 結果為7 | 乘 | ...
上篇我們學會瞭如何使用及定義變數。按照尿性,一般接下來就該學基本數據類型的運算了。
沒錯,本篇就仍是這麼俗套的來講講這無聊但又必學的基本數據類型的運算了。
基本數據類型運算
操作符
符號 | 語義 | 描述 |
---|---|---|
+ | 加 | 10+10,結果為20 |
- | 減 | 10-3, 結果為7 |
* | 乘 | 10*2,結果為20 |
/ | 除 | 10/3, 結果為3(取整數) |
% | 求餘 | 10%3, 結果為1 (取餘數) |
== | 判斷是否相等 | 兩數相等返回1,否則0 |
!= | 判斷是否不等 | 兩數不等返回1,否則0 |
> | 大於 | 前者大於後者返回1,否則0 |
>= | 大於或等於 | 前者大於或等於後者返回1,否則0 |
< | 小於 | 前者小於後者返回1,否則0 |
<= | 小於或等於 | 前者小於或等於後者返回1,否則0 |
上述操作符與其它語言相比,並無特殊之處。
在shell中,對於基本數據類型的運算主要分為兩種,整數運算和浮點數(小數)運算。下麵就分別來看看這兩種運算:
整數運算
在shell中,有兩種方式能實現整數運算,一種是使用expr命令, 另外一種是通過方括弧($[])來實現。下麵分別來看看:
expr
#!/bin/bash
#輸出13
expr 10 + 3
#輸出10+3
expr 10+3
#輸出7
expr 10 - 3
#輸出30
expr 10 \* 3
#輸出3
expr 10 / 3
#輸出1
expr 10 % 3
#將計算結果賦值給變數
num1=$(expr 10 % 3)
#將計算結果賦值給變數
num2=`expr 10 % 3`
註意:
在以上的乘法(*)中,我們用了反斜線(\)來轉義,不然會報錯。
運算符前後必須還有空格,否則會被直接當作字元串返回。
如果要將計算結果保存到變數,就需要用到我們上篇文章講到的那兩種方式($() 或者 ``)來替換命令了。
這種種跡象無不讓人吐槽啊。幸好還有一種實現方式,那就是接下來要看的方括弧。
方括弧($[])
#!/bin/bash
num1=10
num2=3
#輸出num1 + num2=13
echo "num1 + num2=$[$num1 + $num2]"
#輸出num1+num2=13
echo "num1+num2=$[$num1+$num2]"
#輸出num1 - num2=7
echo "num1 - num2=$[$num1 - $num2]"
#輸出num1 * num2=30
echo "num1 * num2=$[$num1 * $num2]"
#輸出num1 > num2=1
echo "num1 > num2=$[$num1 > $num2]"
#輸出num1 < num2=0
echo "num1 < num2=$[$num1 < $num2]"
#將運算結果賦值給變數,輸出num3=3
num3=$[$num1 / $num2]
echo "num3=$num3"
看了這種運算,再回看expr, 是不是覺得要升天,終於正常了。expr的那幾個註意事項,在這兒都不算事兒。所以,如果要圖簡單,還是用這種方式吧。
浮點運算
在shell中,做浮點運算一般是用bash的計算器(bc)。在shell腳本中,一般我們的使用方法是:
variable=$(echo "options; expression" | bc)
options是bc的一些選項,例如: 可以通過scale去設置保留的小數位數。具體有哪些參數,可以man bc進行查看
expression就是我們具體的表達式,例如 10 * 3
" | " 這個符號,對於熟悉linux系統的人來說,這個再熟悉不過了。它叫做管道, 之所以會叫做管道,其實很形象,你可以把它看作一根水管,水管一頭接入前一個命令的返回結果, 一頭接入下一個命令。表示將前一個命令的執行結果作為後一個命令的參數輸入。以上,表示將我們的表達式作為bc的參數輸入。
#!/bin/bash
#表示 10/3, 保留2位小數,將結果賦值給了num, 輸出3.33
num=$(echo "scale=2; 10 / 3" | bc)
echo $num
小結
本篇比較無聊,簡單介紹了shell的基本運算符及其運算。shell運算主要分為整型和浮點型的運算。整型又有兩種實現方式,浮點型是通過使用bash內置的計算器(bc)來實現的。
好啦,到此,我們學習了shell的變數的使用,也學習了基本數據類型變數的計算啦!挺簡單吧
我的獨立博客: javafan.cn