1. 程式人生 > >Linux-Shell指令碼程式設計-學習-4-Shell程式設計-運算元字-加減乘除計算

Linux-Shell指令碼程式設計-學習-4-Shell程式設計-運算元字-加減乘除計算

對於任何一種程式語言都很重要的特性就是運算元字的能力,遺憾的是,對於shell指令碼來說,這個過程比較麻煩,在shell指令碼中有兩種途徑來進行數學運算操作。

1.expr 最開始的時候,shell提供了一個特別的命令來梳理數學表示式,expr允許在命令列上處理數學表示式,但是特別笨拙。

使用expr運算加減還是可以,但是當遇到*號是,就會出現錯誤,需要用到轉義字元 \來識別,同樣,當你希望將數學算式的結果付給一個變數的時候,你需要使用反引號來獲取ecpr命令的輸出。

幸好,在這裡,shell還有有種解決方案,使用方括號[]

2 使用方括號[]

例如:

var1=$[1+5]

echo $var1

var2=$[$var1 * 2]

echo $var2

這裡計算就沒有問題了


3.浮點數的解決方案

在shell指令碼程式設計中,處理浮點數做常見的方法就是使用內建的bash計算機 bc

bc計算器可以識別 數字、變數、註釋、表示式、程式設計語句、函式。

在指令碼中使用bc的基本格式是 variable=`echo "options;expression" | bc

第一部分options允許你來設定變數,如果你需要設定的不止一個變數,可以用分號來分開他們。expression引數定義了通過bc執行的數學表示式。

例如

var1=`echo "scale=4;3.44/5" | bc`

echo the number is $var1

這種方法一般適用於啊+b的這中簡單的數學運算當我們遇到複雜的運算是,就顯得麻煩了,針對這個,bc命令能識別輸入重定向,允許你將一個檔案重定向到bc命令來處理,最好的方法就是使用內鏈出入重定向,允許你直接在控制檯重定向資料,在shell指令碼中,你可以講輸出賦給一個變數

variable=`bc << EOF

options

statements

expressions

EOF

`

EOF文字字串標示了內鏈重定向資料的開始和結尾,記住仍需要使用反引號來講bc命令的輸出賦給變數。

#!/bin/bash

# an exoample for number

var1=10.46
var2=43.67
var3=33.2
var4=71

var5=`bc << EOF
scale =4
a1 = ($var1 * $var2)
b1 = ($var3 * $var4)
a1 + a2
EOF
`
echo "the final answer for this mess is $var5"

以上就是一個簡單的例子