您当前的位置:首页 > 计算机 > 编程开发 > Shell

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

时间:03-04来源:作者:点击数:

一、基本表达式

  • 运算表达式:
    • 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+=2 i=i+2
    i-=2 i=i-2
    i*=2 i=i*2
    i/=2 i=i/2
    i%=2 i=i%2
    # 案例一:
    $ x=4
    $ echo $[x+=1]
    5
    
    # 案例二:
    $ x=4
    $ let x++
    $ echo $x
    5
    
    # 案例三:
    $ let x=4+1
    $ echo $x
    5
    

二、小数运算(bc

  • bc 是 Linux 下的计算机工具模块,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
    
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门