Shell 使用 expr 進行數學運算
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 進行數學運算