Shell的变量数值运算

shell中的运算符(基本与C相同):

++、–、+、-、、/(除/取整)、*(幂运算)、><=、>=、==、!=、+(正)、-(负)、%(取余)、!(逻辑非)、~(位非)、^(异或)、|(位或)、&(位与)、>>(右移)、<<(左移)、&&(逻辑与)、||(逻辑或)、?:(条件表达式)、
=、+=、-=、/=、*=、%=、&=、|=、^=、>>=、<<=、

常见的数值计算:

1、(())的用法:
“(())”的操作数只能是整数,不能使是小数/字符串等:
很常用且效率高,用于执行简单的整数运算。只需要用”$((“与”))”括起来。

eg:
echo $((3>2))  #1
echo $((3<2))  #0
((a=2**3))
echo $a        #8
echo $(a>>1)   #4
echo $((a++))  #4
echo $((++a))  #6

2、let命令的用法:
格式:let 赋值表达式,与”(())”差不多,但是效率不高

eg:
#!/bin/bash
i = $1
let i *= i
echo $i            #结果100

3、expr的用法:
expr命令一般用于整数值,但是也可以用于字符串,用来求表达式的值,同时expr也是一个手工命令行计算器。(用于命令行计算时,要在运算符左边和边加空格)

expr 2+2        #2+2
expr 2 + 2      #4
expr 4 * 2      #语法错误
expr 4 \* 2     #8,需要将乘号转义,以屏蔽特殊用法

a=10
a=`expr $a + 10`   
echo $a        #20
expr $[a+5]        #25

expr的其他用法:

#判断文件的后缀名是否与条件相符,不相符合返回0,符合则返回文件名长度(字符个数):
expr "$1" : ".*\.pub"  
expr "test.pub" : ".*\.pub" && echo "匹配" || echo "不匹配"
#判断一个变量是否是整数:
read -p "Please input:"a
expr $a + 0 &> /dev/null	//(注意"$a + 0"必须有空格)
[ $? -eq 0] && echo "int" || echo "string"
#-eq 0:等于0则返回真;-ne 0:不等于0则返回真

4、bc的用法:
UNIX下的计算器,既可用在命令行中,也可以用在脚本文件里面。不仅可以用于整数,也可以用于小数

a=2
echo $a+2 | bc     #4
echo 7.1+2.2 | bc   #9.3
echo "`seq -s "+" 10` = `seq -s "+" 10` | bc"   #1+2+3+4+5+6+7+8+9+10 = 55

(bc进入计算器,quit退出计算器,而在脚本中一般就是用echo将算式拼出来并通过管道交给bc)只要是正确的数学表达式,就可以通过管道符交给bc计算。

#scale=n    设置保留n位小数
#obase=n    设置十进制转换为n进制
echo "scale=2;5/2"|bc   #2.50(生产环境基本不用,因为取整取余用不着带小数点)
echo "obase=2;8"|bc     #1000

5、typeset的用法:

typeset -i A=10 B=20    #定义两个变量A和B
A=A+B
echo $A #30

6、$[]的用法:

a=5
expr $[a=a+5]      #10
echo $[a=a+5]      #15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值