七.Shell之數字運算必會3類命令

整形數處理基本用法

先看如下命令:

$ var=1
$ var=$var+1
$ echo $var
1+1

可以看出,Shell中變量默認是按字符串進行處理的,但是我們想進行數字運算該怎麼實現?
方法一:使用let命令
let "表達式即可" //無空格""可以省略

$ var=1
$ let var++
$ echo $var
2
$ let "var++"
$ echo $var
3

方法二:使用declare -i定義整型變量
declare -i [變量名] 直接定義爲整形變量,該變量只能作爲整數進行存儲,如果將字符進行存儲,該變量值將變爲0

$ declare -i k
$ k=k+1
$ echo $k
1
$ k=k+1
$ echo $k
2
$ k=qwer
$ echo $k
0

方法三:使用(( ))處理表達式

$ k=0
$ echo $((++k))
1

expr處理整數運算

格式:

expr ARG1 [OP] ARG2

操作符(OP)有:|、&、<、<=、=、>=、>、!=、+、-、*、/、%,要注意的是:
1.元字符(*)不可以直接使用,需要用進行轉義;
2.ARG1、OP、ARG2三者之間必須有空格;
3.=爲比較運算符,並不是賦值。
Demo:

$ expr 99 = 99
1
$ expr 8 * 8
expr: syntax error: unexpected argument “公共”
#我覺得這裏*將作爲通配符進行匹配到第一個目錄
$ expr 8 \* 8
64
$ expr 8 = 8
1

bc運算器

bc是bash中最常用的浮點數運算工具,其特點如下:

  • 整型數、浮點數
  • 簡單變量和數組變量
  • c語言風格註釋(/.../)
  • 表達式
  • 複雜程序結構(如if-then)
  • 函數
直接使用bc:
$ bc -q #-q不輸出版本信息
1/2
0
scale=10
1/2
.5000000000
7/3
2.3333333333
quit
$

不設置scale結果將自動取整

通過管道使用bc:
$ echo "scale=8;99*99" | bc
9801
$ num=7
$ var=`echo "$num^5" | bc`
$ echo $var
16807
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章