shell編程其實真的很簡單(二)

上篇咱們學會了如何使用及定義變量。按照尿性,通常接下來就該學基本數據類型的運算了。
沒錯,本篇就還是這麼俗套的來說講這無聊但又必學的基本數據類型的運算了。java

基本數據類型運算

操做符

符號 語義 描述
+ 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

上述操做符與其它語言相比,並沒有特殊之處。linux

在shell中,對於基本數據類型的運算主要分爲兩種,整數運算浮點數(小數)運算。下面就分別來看看這兩種運算:shell

整數運算

在shell中,有兩種方式能實現整數運算,一種是使用expr命令, 另一種是經過方括號($[])來實現。下面分別來看看:express

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`

注意:bash

  1. 在以上的乘法(*)中,咱們用了反斜線()來轉義,否則會報錯。學習

  2. 運算符先後必須還有空格,不然會被直接看成字符串返回。code

  3. 若是要將計算結果保存到變量,就須要用到咱們上篇文章講到的那兩種方式($() 或者 ``)來替換命令了。字符串

這種種跡象無不讓人吐槽啊。幸虧還有一種實現方式,那就是接下來要看的方括號。get

方括號($[])

#!/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

相關文章
相關標籤/搜索