shell 2 數值運算

2021-08-01 07:06:34 字數 2469 閱讀 3909

1、expr 用法比較麻煩很少使用。

示例:[jamin@localhost ~]$ expr 1 + 2

3+ 號兩邊必須有空格

[jamin@localhost ~]$ expr 3 \* 2 

6* 號是特殊字元。

2、使用[ ]

示例:[jamin@localhost ~]$ echo $[ 1 + 2 ]

3[jamin@localhost ~]$ echo $[ 3 * 2 ]

6shell 中使用:

#!/bin/bash

a=100

b=2c=5

echo $[ $a - $[$b * $c] ]

3、使用雙括號 (())

$ echo $((3 + 2))

5echo $(( 3 * 2 ))

6shell 中使用:

#!/bin/bash

a=100

b=2c=5

echo $(( $a - $(($b * $c)) ))

上面的示例中沒有列出除,因為shell 只支援整數運算。

雙括號的數學表示式    (( expression ))

可以使用的命令符號

var++    後增

var--    後減

++var    先增

--var    先減

!        邏輯求反

~        位求反

**       冪運算

<<       左移位

>>       右移位

&        位布林和

|        位布林或

&&       邏輯和

||       邏輯或

示例:$ echo $((100 ** 2))

10000

注:也可以使用到 if 語句中。 

簡單示例:

#!/bin/bash

a=100

if (( $a ** 2 > 1000 ));then

a2 = $(($a ** 2))

echo "100 square is $a2"

fifor 迴圈計算1...10的和

#!/bin/bash

sum=0

for (( i=1;i<11;i++ ))

dosum=$(($sum+$i))

done

echo $sum

浮點數運算解決方法

1、bash 計算器bc。bc 中一種程式語言,它允許輸入浮點數進行計算。

安裝bc

$sudo yum install bc -y

示例:先輸入bc 命令

$ bc         #bc  -p 可以去除下面的歡迎資訊

bc 1.06.95

this is free software with absolutely no warranty.

for details type `warranty'. 

2 + 3

52 * 3

62 - 3

-12.2 * 3.3

7.22/3

0上面的示例中,乘法和除法並沒有得到我們想要的結果。

浮點運算是由內建變數scale控制的。必須將這個值設定為你希望在計算結果中保留的小數字數,否則無法得到期望的結果。

接著上面示例

scale=4

2.2 * 3.3

7.26

a=100    #定義變數後,可以在整個bc 會話中使用了。重新進入bc ,變數消失

b=5c=2

print a  #print 可以列印變數的值

shell 中使用bc

示例:#!/bin/bash

var=$(echo "scale=4;a=10;b=3; a / b" | bc)

echo $var

注:定義多個變數用『;』號隔開,變數a,b 也可以在shell 中定義。如下:

#!/bin/bash

a=10

b=3var=$(echo "scale=4; $a / $b " | bc)

echo $var

計算式比較長時,上面處理不方便。bc命令能識別輸入重定向,但是這樣要把表達示寫入檔案中,也不可取。

最好的辦法是使用內聯輸入重定向,它允許你直接在命令列中重定向資料。

示例:使用等差數列求和公式(s = n*a1 + n(n-1)*d/2  )計算1...100 的和

#!/bin/bash

a1=1

n=100

d=1sum=$(bc << eof

sum_1 = $n * $a1

sum_2 = $n * ($n - 1) * $d / 2

sum_1 + sum_2

eof)

注:eof文字字串標識了內聯重定向資料的起止。仍然需要命令替換符號將bc命令的輸出賦給變數

編寫自己的shell(2)

指令碼中除了命令之外還包括以下元素 變數,使用者輸入,控制流,環境變數。上一次用fork,execvp,wait實現了乙個能夠建立程序和執行程式的shell。此次對這個shell做一些改進。加入命令列解析,這樣使用者可以在一行中輸入命令和所有引數了,然後將控制語句if.then加入到這個shell中...

shell數值運算

原文 1 錯誤方法舉例 a var 1 1 echo var 輸出的結果是1 1,悲劇,呵呵 b var 1 var var 1 echo var 輸出結果是1 1,依然悲劇,呵呵 2 正確方法 1 使用let var 1 let var 1 echo var 輸出結果為2,這次沒有悲劇 注意 a ...

shell 2 顯示帶顏色字型

shell指令碼中echo顯示內容帶顏色顯示,echo顯示帶顏色,需要使用引數 e,格式如下 echo e 033 字背景顏色 文字顏色m字串 033 0m 例如echo e 033 41 36m something here 033 0m 其中41的位置代表底色,36的位置是代表字的顏色 注 字型...