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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |