linux数据求和脚本,shell脚本之shell变量的数据计算

四、shell变量的数据计算

(一)算数运算符:

1、运算符介绍

+,-

*,/,%

**:幂运算,最先计算。

++,--

!,&&,||

,<=

==,!=,=

<>:向左,右移位。

~,|,&,^:按位取反,按位异或,按位与,按位或

=,+=,-=,*=,/=,%=

(二)编程常见运算命令

1、只适合整数

①(())

[root@centos6-kvm3 ~]# i=$a+1

[root@centos6-kvm3 ~]# echo $i

1+1

[root@centos6-kvm3 ~]# echo $((a+3))

4

[root@centos6-kvm3 ~]# echo $((2**3))

8

[root@centos6-kvm3 ~]# echo $((1+2**3-5%3))

7

[root@centos6-kvm3 ~]# ((i++))

[root@centos6-kvm3 ~]# echo $i

3

②let

[root@centos6-kvm3 ~]# a=1

[root@centos6-kvm3 ~]# i=$a+1

[root@centos6-kvm3 ~]# let i=$a+1

[root@centos6-kvm3 ~]# echo $i

2

③expr

[root@centos6-kvm3 ~]# expr 2 + 3

5

[root@centos6-kvm3 ~]# expr 2*2

2*2

[root@centos6-kvm3 ~]# expr 2 * 2

expr: syntax error

[root@centos6-kvm3 ~]# expr 2 \* 2

4

④$[]

[root@centos6-kvm3 ~]# echo $[2-3]

-1

[root@centos6-kvm3 ~]# echo $[1+3]

4

2、既适合整数,又适合小数:

①bc

[root@centos6-kvm3 ~]# bc

1+2

3

2-1

1

[root@centos6-kvm3 ~]# echo 1.1+2| bc

3.1

②awk

[root@centos6-kvm3 ~]# echo 2.1 1.4| awk '{print $1*$2}'

2.94

[root@centos6-kvm3 ~]# echo 2.1 1.4| awk '{print $1-$2}'

0.7

(三)expr的企业级实战案例详解

1、判断一个是否为整数:

[root@centos6-kvm3 ~]# expr 2 + 3

5

[root@centos6-kvm3 ~]# expr 2 + a

expr: non-numeric argument

[root@centos6-kvm3 ~]# echo $?

2

[root@centos6-kvm3 ~]# a=2

[root@centos6-kvm3 ~]# expr 2 + $a &>/dev/null

[root@centos6-kvm3 ~]# echo $?

0

[root@centos6-kvm3 ~]# a=oldboy

[root@centos6-kvm3 ~]# expr 2 + $a &>/dev/null

[root@centos6-kvm3 ~]# echo $?

2

[root@centos6-kvm3 ~]#

判断参数是否为整数应用脚本:

[root@centos6-kvm3 scripts]# cat judge.sh

#!/bin/bash

expr 2 + $1 &>/dev/null

if [ $? -eq 0 ]

then

echo "$1 is 整数"

else

echo "$1 is not 整数"

fi

[root@centos6-kvm3 scripts]# sh judge.sh 4

4 is 整数

[root@centos6-kvm3 scripts]# sh judge.sh j

j is not 整数

[root@centos6-kvm3 scripts]#

2、expr判断文件扩展名:

[root@centos6-kvm3 scripts]# cat judge1.sh

#!/bin/bash

expr "$1" : ".*\.txt" &>/dev/null

if [ $? -eq 0 ]

then

echo "$1 is 文本"

else

echo "$1 is not 文本"

fi

[root@centos6-kvm3 scripts]# sh judge1.sh old.txt

old.txt is 文本

[root@centos6-kvm3 scripts]# sh judge1.sh old.log

old.log is not 文本

[root@centos6-kvm3 scripts]#

3、expr计算字符串长度:

[root@centos6-kvm3 scripts]# oldboy="i am oldboy"

[root@centos6-kvm3 scripts]# echo ${#oldboy}

11

[root@centos6-kvm3 scripts]# expr length "$oldboy"

11

[root@centos6-kvm3 scripts]#

转自:https://www.cnblogs.com/cuiyongchao007/p/12791382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值