Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)

一、基本表达式

  • 运算表达式:

    • expr:不支持浮点数计算,计算结果直接输出,中间必须存在空格。

      格式 expr 整数1 运算符 整数2 ...

    • $[]:不支持浮点数计算,空格可有可无。

      格式 $[整数1 运算符 整数2 ...]

    • $(()):不支持浮点数计算,空格可有可无。

      格式 $((整数1 运算符 整数2 ...))

    • let:不支持浮点数计算,除了 let 后面有空格,计算中必定不能存在空格,只能赋值,不能直接输出,需要通过 echo 进行输出。

      格式 let 属性名=整数1+整数2...

    • awk:不支持浮点数计算,使用时,直接使用数字进行计算跟使用变量进行计算需要注意区别。

      纯数字格式:echo | awk '{print 1/2}',可支持单引号计算。

      有变量格式:echo | awk "{print $x/$y}",必须双引号,也支持纯数字计算。

    • 重点:以上表达式都不支持浮点数计算

    # $[] 表达式
    $ echo $[1+2]
    $ echo $[2-1]
    $ echo $[2*1]
    $ echo $[2/1]
    $ echo $[2%3]
    
    # $(()) 表达式
    $ echo $((1+2))
    
    # let 表达式
    $ let x=1+2
    $ echo $x
    
    # expr 表达式
    $ expr 1 + 2
    
    # awk 表达式
    $ echo | awk '{print 1/2}'
    $ echo | awk "{print 1/2}"
    $ x=1
    $ y=2
    $ echo | awk "{print $x/$y}"
    
  • 简写表达式(自增自减)

    简写表达式完整表达式
    i++i=i+1
    i–i=i-1
    i+=2i=i+2
    i-=2i=i-2
    i*=2i=i*2
    i/=2i=i/2
    i%=2i=i%2
    # 案例一:
    $ x=4
    $ echo $[x+=1]
    5
    
    # 案例二:
    $ x=4
    $ let x++
    $ echo $x
    5
    
    # 案例三:
    $ let x=4+1
    $ echo $x
    5
    

二、小数运算(bc

  • bcLinux 下的计算机工具模块,bc 支持 交互式非交互式 两种计算,在进行计算的时候,可以使用 scale=n 来指定小数点的位数,还支持比较操操作符 >、>=、<、<=、==、!=

    • 交互式:打开 bc 计算机,进行使用。

    • 非交互式:通过脚本命令执行,不需要打开计算机。

  • 在使用 bc 命令时如果报错 bc: command not found,说明没有安装此工具模块,需要进行安装:

    $ yum -y install bc
    
  • 交互式 使用 bc

    # 进入计算机
    $ bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    
    # 整数计算
    2*3
    6
    
    # 小数计算
    3.4+9.0
    12.4
    
    # 保留小数点
    10/2
    5
    
    # 设置保留两位小数点
    scale=2
    
    # 整数相除
    10/2
    5.00
    
    4/5
    .80
    
    # 退出计算机
    quit
    

    上面这种是类似直接打开计算机进行使用,一般还是需要将它用在脚本命令中去进行计算。

  • 非交互式 使用 bc

    格式:echo "计算公式" | bcecho "计算公式;计算公式" | bc

    • 正常计算
    # 单个计算,可以不使用引号
    $ echo 10/2 | bc
    5
    
    # (推荐写法)单引号跟双引号的区别跟上面 awk 一致,可以看看上面 awk 的格式介绍
    # 多个计算,使用 ';' 进行分割即可
    $ echo '10/2;5/2' | bc
    $ echo "10/2;5/2" | bc
    5
    2
    
    # 保留2位小数
    $ echo "scale=2;10/2;5/2" | bc
    5.00
    2.50
    
    • 比较操作符
    # 单个比较
    $ echo '1>2' | bc
    0
    $ echo '1<2' | bc
    1
    
    # 多个比较
    $ echo '1>2;1<2' | bc
    0
    1
    
    # 将计算结果值复制变量
    $ x=$(echo '1>2' | bc)
    $ echo $x
    0
    
    $ x=$(echo '1<2' | bc)
    $ echo $x
    1
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卡尔特斯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值