shell编程之数值运算

在shell中所有变量默认为字符串类型,若不手动设置变量的类型,则所有数值都不能运算

[root@ localhost~]# aa = 11
[root@ localhost~]# bb = 22
[root@ localhost~]# cc = $aa + $bb
[root@ localhost~]# echo $cc
11 + 22

若需要数值运算,则可以采用下列三种方法

  • 1.使用declare声明变量类型

      [root@ localhost~]# declare [选项] 变量名
    

    选项:
    -:给变量设定类型属性
    +:取消变量的类型属性
    -a:将变量声明为数组型
    -i:将变量声明为整数型(Integer)
    -r:将变量声明为只读变量
    -x:将变量声明为环境变量
    -p:显示指定变量被声明的类型

      [root@ localhost~]# aa = 11
      [root@ localhost~]# bb = 22
      [root@ localhost~]# declare -i cc = $aa + $bb
      [root@ localhost~]# echo $cc
      33
    

    数组与变量类似,变量和数组都是用来保存数据的,只是变量只能被赋予一个数据值,一旦重复赋值,后一个值就会覆盖前一个值;而数组可以被赋予一组相同类型的数据值

      [root@ localhost~]# declare -a name
    

    name就会被认为是数组,虽然还未赋值,也不会被视为变量。如果没有把name变量声明为数组类型,只要在定义变量时采用了“变量名[下标]"的格式,这个变量就会被系统默认为数组类型

    declare命令还可以把变量声明为环境变量,它和export命令的作用是一样的

      [root@ localhost~]# declare -x test = 123
    

    表示把变量test声明为环境变量

    一旦给变量设定了只读属性,那么既不能修改该变量的值,也不能删除该变量,甚至不能使用”+r”选项取消只属性,例如:

      [root@ localhost~]# declare -r test
      [root@ localhost~]# test = 456
      bash:test: readonly variable
      [root@ localhost~]# declare +r test
      bash:declare:test:readonly variable
      [root@ localhost~]# unset test
      bash: unset: test: cannot unset: readonly variable
    

    所有只有结束该shell,重新登录或重启,这个变量才会取消。

      [root@ localhost~]# declare -p cc
      declare -i cc= "33"
    

    表明cc变量是int类型

      [root@ localhost~]# declare -p name
      declare -a name='([0]="zhang san" [1]="li ming" [2]="gao luo feng")'
    

    表明name变量是数组型

  • 2.使用expr和let命令
    expr命令:

      [root@ localhost~]# aa = 11
      [root@ localhost~]# bb = 22
      [root@ localhost~]# dd = $(expr $aa + $bb)
      [root@ localhost~]# echo $dd
      33
    

    注意“+”左右必须有空格,否则运算不执行

    let命令:

      [root@ localhost~]# aa = 11
      [root@ localhost~]# bb = 22
      [root@ localhost~]# let ee = $aa + $bb
      [root@ localhost~]# echo $ee
      33
    
  • 3.使用“$(( 算术表达式 ))”运算
    凡是使用let命令的地方都可使用(( 算术表达式 ))取代,但其中只能包含一个算术表达式

      [root@ localhost~]# aa = 11
      [root@ localhost~]# bb = 22
      [root@ localhost~]# ff = $(( $aa + $bb ))
      [root@ localhost~]# echo $ff
      33
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值