shell 脚本 -- 变量的运算

1. 整数运算

方法一: expr
expr 1 + 2
expr $num1 + $num2       +          -           \*        /         %
 

方法二: $(())
echo $(($num1+$num2))                  +      -        *       /        %
echo $((num1+num2))
echo $((5-3*2))
echo $(((5-3)*2))
echo $((2**3))
sum=$((1+2)); echo $sum


方法三: $[]
echo $[5+2] + - * / %
echo $[5**2]


方法四: let
let sum=2+3; echo $sum
let i++; echo $i
 

#!/bin/bash
ip=localhost
i=1
while [ $i -le 5 ]
do
    ping -c1 $ip &>/dev/null
    if [ $? -eq 0 ];then
        echo "$ip is up ...."
    fi
    let i++
done

2. 小数运算
echo "2*4" |bc
echo "2^4" |bc
echo "scale=2;6/4" |bc

awk 'BEGIN{print 1/2}'

echo "print 5.0/2" |python

 

变量"内容"的删除和替换(扩展)

==="内容"的删除===
[root@tianyun ~]# url=www.sina.com.cn

[root@tianyun ~]# echo ${#url} 获取变量值的长度 15

[root@tianyun ~]# echo ${url} 标准查看 www.sina.com.cn
[root@tianyun ~]# echo ${url#*.} 从前往后,最短匹配 sina.com.cn

[root@tianyun ~]# echo ${url#www.si} 从前往后,最短匹配 na.com.cn

[root@tianyun ~]# echo ${url#*si} 从前往后,最短匹配 na.com.cn

[root@tianyun ~]# echo ${url##*.} 从前往后,最长匹配 贪婪匹配 cn

[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# echo ${url}
www.sina.com.cn
[root@tianyun ~]# echo ${url%.*} 从后往前,最短匹配 www.sina.com

[root@tianyun ~]# echo ${url%%.*} 从后往前,最长匹配 贪婪匹配 www

[root@tianyun ~]# url=www.sina.com.cn

[root@tianyun ~]# echo ${url#a.} www.sina.com.cn
[root@tianyun ~]# echo ${url#*sina.} com.cn

[root@tianyun ~]# echo $HOSTNAME

tianyun.1000phone.com
[root@tianyun ~]# echo ${HOSTNAME%%.*} tianyun

索引及切片

[root@tianyun ~]# echo ${url:0:5}

[root@tianyun ~]# echo ${url:5:5}

[root@tianyun ~]# echo ${url:5}

 

==="内容"的替换===


[root@tianyun ~]# url=www.sina.com.cn

[root@tianyun ~]# echo ${url/sina/baidu}

www.baidu.com.cn

[root@tianyun ~]# url=www.sina.com.cn

[root@tianyun ~]# echo ${url/n/N}

www.siNa.com.cn
[root@tianyun ~]# echo ${url//n/N} 贪婪匹配

www.siNa.com.cN

===变量的替代===

[root@tianyun ~]# unset var1

[root@tianyun ~]#

[root@tianyun ~]# echo ${var1}

[root@tianyun ~]# echo ${var1-aaaaa}

aaaaa

[root@tianyun ~]# var2=111

[root@tianyun ~]# echo ${var2-bbbbb}

111

[root@tianyun ~]#

[root@tianyun ~]# var3=

[root@tianyun ~]# echo ${var3-cccc}

${变量名-新的变量值}

变量没有被赋值:会使用“新的变量值“ 替代

变量有被赋值(包括空值): 不会被替代

 

[root@tianyun ~]# unset var1

[root@tianyun ~]# unset var2

[root@tianyun ~]# unset var3

[root@tianyun ~]# var2=

[root@tianyun ~]# var3=111

[root@tianyun ~]# echo ${var1:-aaaa}

aaaa

[root@tianyun ~]# echo ${var2:-aaaa}

aaaa

[root@tianyun ~]# echo ${var3:-aaaa}

111

${变量名:-新的变量值}

变量没有被赋值(包括空值):都会使用“新的变量值“ 替代

变量有被赋值: 不会被替代

 

[root@tianyun ~]# echo ${var3+aaaa}    与-相反

[root@tianyun ~]# echo ${var3:+aaaa}   与:-相反

[root@tianyun ~]# echo ${var3=aaaa}   与-类似    并且会给未定义的赋值

[root@tianyun ~]# echo ${var3:=aaaa}   与:-类似  并且会给未定义和空值的赋值

[root@tianyun ~]# echo ${var3?aaaa}    未定义的会报错

[root@tianyun ~]# echo ${var3:?aaaa}   未定义的和空值的会报错

i++ 和 ++i 

对变量的值无影响:

[root@tianyun ~]# i=1

[root@tianyun ~]# let i++

[root@tianyun ~]# echo $i

2

[root@tianyun ~]# j=1

[root@tianyun ~]# let ++j

[root@tianyun ~]# echo $j

2

对表达式的值有影响:

[root@tianyun ~]# i=1

[root@tianyun ~]# j=1

[root@tianyun ~]# let x=i++   先赋值,在运算

[root@tianyun ~]# let x=++j  先运算,在赋值

[root@tianyun ~]# echo $i

2

[root@tianyun ~]# echo $j

2

[root@tianyun ~]# echo $x

1

[root@tianyun ~]# echo $y

2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡搜偶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值