數(shù)學(xué)運(yùn)算
語(yǔ)法格式
# 方法一
expr $num1 operator $num2
# 方法二
$(($num1 operator $num2))
expr 操作符表
| 操作符 |
含義 |
num1 | num2 |
num1不為空且非0,返回num1;否則返回num2 |
num1 \& num2 |
num1不為空且非0,返回num1;否則返回0 |
num1 \< num2 |
num1小于num2,返回1;否則返回0 |
num1 \<= num2 |
num1小于等于num2,返回1;否則返回0 |
num1 = num2 |
num1等于num2,返回1;否則返回0 |
num1 != num2 |
num1不等于num2,返回1;否則返回0 |
num1 \> num2 |
num1大于num2,返回1;否則返回0 |
num1 \>= num2 |
num1大于等于num2,返回1;否則返回0 |
num1 + num2 |
加 |
num1 - num2 |
減 |
num1 \* num2 |
乘 |
num1 / num2 |
除 |
num1 % num2 |
取余 |
- 注意: | & < > * expr需要使用\轉(zhuǎn)譯
- $(( ))不需要轉(zhuǎn)譯 注意此種運(yùn)算方式不支持= 和!= 推薦:只使用 + - * / 和 %
- expr數(shù)學(xué)運(yùn)算只能對(duì)整數(shù) 不支持浮點(diǎn)數(shù)
num1=30
num2=50
expr $num1 \> $num2
# 0
expr $num1 \<= $num2
# 1
expr $num1 \* $num2
# 1500
expr $num1 + $num2
# 80
# 使用命令替換賦值
num3=`expr $num1 - $num2`
echo $num3
# -20
# 使用$$(( ))
num3=$((num1+num2))
echo $num3
練習(xí)
- 用戶輸入一個(gè)正整數(shù)num 然后計(jì)算1+2+3+...+num,輸出結(jié)果
#!/bin/bash
while true
do
read -p "Please input a positive number: " num
# 做一個(gè)數(shù)學(xué)運(yùn)算 結(jié)果放到垃圾桶
expr $num + 1 &> /dev/null
# 如果數(shù)學(xué)運(yùn)算成功 $? 為 0 如果不成功返回非0 所以可以根據(jù)$?來(lái)判斷整數(shù)
if [[ $? -eq 0 && $num -gt 0 ]]; then
sum=0
for((i=1;i<=$num;i++))
do
sum=`expr $i + $sum`
done
echo "1+2...$num = $sum"
exit
else
echo "Number is invalid, pleace try again! "
continue
fi
done
浮點(diǎn)數(shù)運(yùn)算
- bc是bash內(nèi)建的運(yùn)算容器,支持浮點(diǎn)數(shù)運(yùn)算
- 內(nèi)建變量scale(精確度,可以理解為小數(shù)位數(shù))可以設(shè)置,默認(rèn)為0
- bc有的linux內(nèi)置,有的沒(méi)有內(nèi)置 (我使用centos 7.x server 是沒(méi)有的 可以直接
yum install bc)
bc操作符對(duì)照表
| 操作符 |
含義 |
num1 + num2 |
加 |
num1 - num2 |
減 |
num1 * num2 |
乘 |
num1 / num2 |
除 |
num1 % num2 |
取余 |
num1 ^ num2 |
指數(shù)運(yùn)算 |
演示
echo "23 / 12" | bc
# 1
echo "23.2 + 12" | bc
# 35.2
echo "scale=2; 23.3 / 12" | bc
# 1.94
echo "10 / 3 * 2" | bc
# 6
echo "scale=4; 10 / 3 * 2" | bc
# 6.6666
# 加減法小數(shù)運(yùn)算可以不指定scale,但是乘除如果有小數(shù)一定要加scale
輸入兩個(gè)數(shù)相加
#!/bin/bash
read -p "Please input num1:" num1
read -p "Please input num2:" num2
# 加法可以不用指定scale可以小數(shù)相加
result=`echo "$num1 + $num2" | bc`
echo $result
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。