1. 程式人生 > >Shell 使用 expr 進行數學運算

Shell 使用 expr 進行數學運算

用戶輸入 for 管道 (()) else png 直接 數學運算 技術分享

1、語法格式:

  第一種:expr $num1 operator $num2

  第二種:$(($num1 operator $num2))

2、expr 操作符:

技術分享圖片

註意:這裏比較為true,返回 1。只支持整數。

技術分享圖片

3、實際使用,比較時必須有空格

在實際使用過程中,類似於“|” 這樣的管道符號要進行轉義,如下:

  num1=100

  num2=200  

  expr $num1 \| $num2

  expr $num1 \& $num2

  expr $num1 \< $num2

  expr $num1 \<= $num2

  expr $num1 \> $num2

  expr $num1 \>= $num2

  expr $num1 = $num2

  expr $num1 != $num2

  expr $num1 + $num2

  expr $num1 - $num2

  expr $num1 \* $num2

  expr $num1 / $num2

  expr $num1 % $num2

4、舉例

  $ num1=30

  $ num2=50

  $ expr $num1 \| $num2

  打印出:30

  

  $ expr $num1 + $num2

  打印出:80

  $ num3=`expr $num1 \* $num2` // 命令替換的形式

  $ echo $num3 

  打印出:1500

  

  對於 $(()) 這種操作,需要賦給一個值,並且裏面的符號不用轉義。 expr 會直接當成一個命令進行操作

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

  $ echo $num3 

  打印出:1500

  註意:$(()) 進行運算只能進行 加、減、乘、除、求余 運算。

5、大練習

  提示用戶輸入一個正整數,然後計算 1+2+3+...+num 的值,並打印。 必須對num進行正整數判斷,不符合要求,則給出提示,然後重新輸入。

#!/bin/bash

#計算 1+2+3+...+num 的和,並且num 必須是正整數

while true
do
    read -p "請輸入一個正整數:" num

    # 判斷是不是整數,如果不是整數,num + 1 運算會報錯,$? 返回值就為2
    expr $num + 1 &> /dev/null

    if [ $? -eq 0 ]; then
        if [ `expr $num \> 0` -eq 1 ]; then
            for((i=1; i<=$num; i++))
            do
                sum=`expr $sum + $i`
            done
            echo "1+2+...+$num = $sum"
            exit
        fi
        echo "輸入的參數不是正整數"
    else
        echo "輸入的參數不是一個整數"
    fi
    continue
done

  

Shell 使用 expr 進行數學運算