Shell编程之运算符

一.概述及declare命令

1.shell变量的缺点
  • 弱类型
  • 默认字符串型
2.declare声明变量类型
  • [root@localhost ~]# declare [+/-] [选项] 变量名

    • -给变量设定类型属性
    • +取消变量的类型属性
    • eg. -a将变量声明为数组型
    • eg. +a取消变量声明为数组型
    • -i将变量声明为整数型(integer)
    • -x将变量声明为环境变量
    • -r将变量声明为只读变量【声明数值后不能修改删除或者取消只读属性
    • -p显示指定变量的被声明的类型【参数不加变量名查看系统中所有变量的声明信息;加变量名查看系统中指定变量的声明信息】
  • 把变量声明为数值型

    [root@localhost ~]# aa=11
    [root@localhost ~]# bb=22
    #给变量aa和bb赋值
    [root@localhost ~]# declare -i cc=$aa+$bb
    #声明变量cc的类型是整数型,它的值是aa和bb的和
    declare -p cc
    #结果:declare -i cc="33"
    
  • 声明数组变量

    #定义数组
    [root@localhost ~]# movie[0]=zp
    [root@localhost ~]# movie[1]=tp
    [root@localhost ~]# declare -a movie[2]=live
    #查看数组
    [root@localhost ~]# echo ${movie} #zp
    [root@localhost ~]# echo ${movie[2]} #live
    [root@localhost ~]# echo ${movie[*]} #zp tp live
    
  • 声明环境变量

    declare -x test=123
    #和export作用相似,但其实是declare命令的作用
    

二.数值运算方法

  • 数值运算方法一

    [root@localhost ~]# aa=11
    [root@localhost ~]# bb=22
    #给变量aa和bb赋值
    [root@localhost ~]# declare -i cc=$aa+$bb
    #声明变量cc的类型是整数型,它的值是aa和bb的和
    
  • 数值运算方法二(expr或let数值运算工具)

    [root@localhost ~]# aa=11
    [root@localhost ~]# bb=22
    [root@localhost ~]# dd=$(expr $aa + $bb)
    #dd的值是aa和bb的和,注意“+”号左右两侧必须有空格
    
  • 数值运算方法三($((运算式))或$[运算式]

    [root@localhost ~]# aa=11
    [root@localhost ~]# bb=22
    [root@localhost ~]# ff=$(($aa+$bb))
    [root@localhost ~]# gg=$[$aa+$bb]
    
  • 运算符(优先级数值大的优先级高)

    优先级运算符说明
    13- +单目负 单目正
    12! ^逻辑非 按位取反或补码
    11* / %乘 除 取模
    10+ -加 减
    9<< >>按位左移 按位右移
    8<= >= < >小于等于 大于等于 小于 大于
    7== !=等于 不等于
    6&按位与
    5^按位异或
    4|按位或
    3&&逻辑与
    2||逻辑或
    1= += -= /= %= &= ^= |= <<= >>=赋值,运算且赋值
    #eg
    yy=$((4+9*3/5))#9
    cc=$((1&0))#0
    cc=$((1&&0))#0
    

三.变量测试

变量置换方式变量y不存在变量y为空值变量y设置值
x=${y-新值}x=新值x为空x=$y
x=${y:-新值}x=新值x=新值x=$y
x=${y+新值}x为空x=新值x=新值
x=${y:+新值}x为空x为空x=新值
x=${y:=新值}x=新值 y=新值x为空 y=新值x=$y y值不变
x=${y=新值}x=新值 y=新值x=新值 y=新值x=$y y值不变
x=${y?新值}新值输出到标准错误输出(就是屏幕)x为空x=$y
x=${y:?新值}新值输出到标准错误输出新值输出到标准错误输出x=$y
  • 测试举例

    #测试x=${y-新值}
    [root@localhost ~]# unset y #删除变量y
    [root@localhost ~]# x=${y-2} #测试
    [root@localhost ~]# echo $x #2s
    #因为变量y不存在,所以x=新值
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值