expr语法
语法 | |
---|---|
方法一 | expr $num1 operator $num2 |
方法二 | $(($num1 operator $num2)) (这样的运算必须要给一个属性赋值,这种运算不需要转义,该操作只能进行加减乘除) |
operator : 操作符号(+ - * / %)
expr操作符对照表
操作符 | 含义 |
---|---|
num1 | num2 | num1不为空且非0,返回num;否则返回num2 |
num1 & num2 | num1不为空且非0,返回num1;否则返回0 |
num1 < num2 | num1小于num2,返回1,否则返回0 |
num1 <= num2 | num1小于等于num2,返回1,否则返回num2 |
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 | 求余 |
| & > < >= <= * 等特殊符号需要\进行转义
练习例子:
提示用户输入一个正整数num,然后计算1+2+3+。。。+num的值;必须对num是否为正整数做判断,不是正整数提示用户重新操作
#!/bin/bash
#
while true
do
read -p "请输入一个正整数:" num
# 只有整数才可以计算,把结果扔到垃圾桶里,不需要运算的结果
expr $num + 1 &> /dev/null
#非整数不能相加,等于0代表是整数, $?获取返回值
if [ $? -eq 0 ];then
# 判断输入的数是正数
if [ `expr $num \> 0` -eq 1 ];then
echo "输入的数$num 是个正整数"
for((i=1; i<=$num; i++))
do
sum=`expr $sum + $i`
echo "现在sum 等于 $sum"
done
echo "1+2+3...+num = $sum"
exit
else
echo "输入的数$num 不是一个正整数,请重新输入"
continue
fi
else
echo "输入的数$num 不是一个整数,请重新输入"
continue
fi
done
bc介绍
- bc是bash内建的运算器,支持浮点数运算
- 内建变量scale可以设置,默认为0
操作符 | 含义 |
---|---|
num1 + num2 | 求和 |
num1 - num2 | 求差 |
num1 * num2 | 求积 |
num1 / num2 | 求商 |
num1 % num2 | 求余 |
num1 ^ num2 | 指数运算 |
scale默认是0,所有只能除法运算时只能获取到整数。
- 在脚本中使用 bc 可以用字符串计算通过管道传给bc
- 也可以指定scale值,需要用分号隔开
- 一个简单的脚本
#!/bin/bash
#
read -p "请输入第一个数" num1
read -p "请输入第二个数" num2
num3=`echo "scale=4; $num1 * $num2" | bc`
echo "第一个数乘第二个数等于$num3"