shell 數學運算

數學運算之 expr

expr操做符對照表linux

 

 

比較大小,只能對整數進行比較,須要加空格,linux 保留關鍵字要轉義shell

num1=30
num2=50
expr $num1 \> $num2

 

查看上一條命令有沒有執行成功bash

echo $?

返回0 成功,其餘失敗測試

小於、小於等於、大於等於spa

expr $num1 \< $num2
expr $num1 \<= $num2
expr $num1 \>= $num2

 

 

運算 加、減、乘、除3d

# 加
num1=17
num2=5
expr $num1 + $num2

# 減
num3=`expr $num1 + $num2`
echo $num3

expr $num1 - $num2

# 乘
expr $num1 \* $num2
expr $num1 / $num2

# 取餘數
expr $num1 % $num2

  

 

 須要注意事項:blog

兩個小括號的計算方法,要賦值,不然會報錯input

# 直接輸出報錯
$(($num1+$num2))

# 須要賦值給一個變量
num3=$(($num1+$num2))
echo $num3

num3=$(($num1*$num2))
echo $num3

num3=$(($num1-$num2))
echo $num3

num3=$(($num1/$num2))
echo $num3

 

 

 

一些操做符在$(()) 不支持, 在比較運算的時候最好使用expr數學

num1=5
num2=5
num3=$(($num1=$num2))

 

expr $num1 = $num2

 

練習例子  it

提示用戶輸入一個正整數num,而後計算1+2+3+...+num的值;必須對num是否爲正整數作判斷,不符合應當運行再次輸入

 

判斷是不是一個正整數

思路:

  • expr只能對整數進行計算,直接用expr 和一個整數計算獲取 $? 的值來判斷是否爲整數
  • 在使用 expr $num1 \> 0 判斷是否大於0
# 不是整數使用 expr 進行數學運算會出錯
num1=56.58
expr $num1 + 1

  

 

sum.sh

 

#!/bin/bash
#
while true
do
        read -p "please input a positive number: " num
        # 判斷數是不是整數
        expr $num + 1 &> /dev/null
        if [ $? -eq 0 ];then
                # 判斷這個整數是否大於0,大於0返回1
                if [ `expr $num \> 0` -eq 1 ];then
                        #echo "yes,positive number"
                        # $sum沒有賦值,默認爲0
                        for((i=1;i<=$num;i++))
                        do
                                sum=`expr $sum + $i`
                        done
                        echo "1+2+3+...+$num = $sum"
                        # 執行計算須要退出
                        exit
                fi
        fi
        echo "error,input enlegal"
        continue
done

 

執行腳本

sh sum.sh

 

shell 運算之 bc

bc 介紹:

  • bc 是bash內建的運算器,支持浮點數運算
  • 內建變量scale能夠設置,默認爲 0

bc 操做符對照表

 

 交互測試

 

 

 

腳本中使用管道符進行計算

echo "23+33" | bc

 

保留精度 scale=4; 用分號隔開

echo "scale=4;23.3/3.5" | bc

 

bc示例腳本

bc.sh

#!/bin/bash
#

read -p "num1: " num1
read -p "num2: " num2

#echo "scale=4;$num1/$num2" | bc

num3=`echo "scale=4;$num1/$num2" | bc`

echo "$num1 / $num2 = $num3"

 

執行

sh bc.sh

 

相關文章
相關標籤/搜索