精华内容
下载资源
问答
  • linux shell 小数计算

    千次阅读 2020-06-08 13:59:36
    最开始,Bourne shell提供了一个特别的命令用来处理数学表达式。expr命令允许在命令行上处理数学表达式,但是特别笨拙: $ expr 1 + 5 6 expr命令能识别一些不同的数字和字符串操作符,如下表: 操作符 描 述 -...

    bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理

    expr命令

    最开始,Bourne shell提供了一个特别的命令用来处理数学表达式。expr命令允许在命令行上处理数学表达式,但是特别笨拙:

    $ expr 1 + 5
    6

    expr命令能识别一些不同的数字和字符串操作符,如下表:

    操作符 描 述

    -----------------------------------------------------------------------

    ARG1 | ARG2 如果没有参数是null或0,返回ARG1;否则返回ARG2

    ARG1 & ARG2 如果没有参数是null或0,返回ARG1;否则返回0

    ARG1 < ARG2 如果ARG1小于ARG2,返回1;否则返回0

    ARG1 <= ARG2 如果ARG1小于或等于ARG2,返回1;否则返回0

    ARG1 = ARG2 如果ARG1等于ARG2,返回1;否则返回0

    ARG1 != ARG2 如果ARG1不等于ARG2,返回1;否则返回0

    ARG1 >= ARG2 如果ARG1大于或等于ARG2,返回1;否则返回0

    ARG1 > ARG2 如果ARG1大于ARG2,返回1;否则返回0

    ARG1 + ARG2 返回ARG1和ARG2的算术运算和

    ARG1 - ARG2 返回ARG1和ARG2的算术运算差

    ARG1 * ARG2 返回ARG1和ARG2的算术乘积

    ARG1 / ARG2 返回ARG1和ARG2的算术商

    ARG1 % ARG2 返回ARG1和ARG2的算术余数

    STR : EXP 如果EXP匹配到STR的某个模式,返回该模式匹配

    match STR EXP 如果EXP匹配到STR的某个模式,返回该模式匹配

    substr STR POS LEN 返回起始位置为POS(从1开始计数)、长度为LEN个字符的字符串

    index STR CHARS 返回在STR中找到CHARS字符串的位置;否则,返回0

    length STR 返回字符串STR的数值长度

    + TOKEN 将TOKEN解释成字符串,即使是个关键字

    (EXPRESSION) 返回EXPRESSION的值

     

    尽管标准操作符在expr命令中工作得很好,但在脚本或命令行上使用它们时仍有问题出现。许多expr命令操作符在shell中有其他意思(比如星号)。在expr命令中使用它们会得到一些诡异的结果:

    $ expr 5 * 2
    expr: syntax error
    $

    要解决这个问题,在传给expr命令前,你需要使用shell的转义字符(反斜线)来识别容易被shell错误解释的任意字符:

    $ expr 5 \* 2
    10
    $

    不过,bash shell有一个针对处理数学运算符的改进,请看下面。

     

    使用方括号

    bash shell为了保持跟Bourne shell兼容而包含了expr命令,但它同样也提供了一个执行数学表达式更简单的方法。在bash shell中,在将一个数学运算结果赋给某个变量时,你可以用美元符和方括号($[ operation ])将数学表达式圈起来:

    $ var1=$[1 + 5]
    $ echo $var1
    6
    $ var2=$[$var1 * 2]
    $ echo $var2
    12
    $

    用方括号来执行shell数学运算比用expr命令方便很多,这种技术在shell脚本中也能工作。同样,在使用方括号来计算公式时,不用担心shell会误解乘号或其他符号。shell知道它不是通配符,因为它在方括号内。

    但是,bash shell数学运算只支持整数运算。如果要计算浮点,请往下看。

     

    浮点解决方案

    有几种解决方案能够解决bash中数学运算的整数限制。最常见的解决方法是有内建的bash计算器,称作bc。

    ###bc的基本用法

    bash计算器其实是允许你在命令行输入浮点表达式、解释表达式、计算并返回结果的一种编程语言。bash计算器能够识别:

    - 数字(整数和浮点数)

    - 变量(简单变量和数组)

    - 注释(以#开始的行或者C语言中的/* */对)

    - 表达式

    - 编程语句(例如if-then)

    - 函数

    你可以在shell提示符下通过bc命令访问bash计算器:

    $ bc
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    12*5.4
    64.8
    quit

    输入计算公式,bc会自动返回答案,退出输入quit。

    浮点运算是由一个内建的称为scale的变量控制的。你必须将这个值设置为结果是你想要的小数后的位数。

    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    3.44 /5
    0
    scale=4
    3.44 /5
    .6880
    quit

    在脚本中使用bc

    你可以使用反引号或者$()来运行bc命令并将输出赋给一个变量。基本格式是这样的:

    variable = `echo "options; expression" | bc`

    第一部分options允许你来设置变量。如果你需要设置不止一个变量,可以用分号来分开它们。expression变量定义了通过bc执行的数学表达式。例子:

    #!/bin/bash
    var1=`echo "scale=4; 3.44 / 5" | bc`
    echo The answer is $var1

    结果是: The answer is .6880

    这种方法适用于较短的运算,但有时你会更多地和你自己的数字打交道。如果你有很多运算,在同一个命令行中列出多个表达式就会有点麻烦。

    针对这个问题有个解决办法。bc命令能识别输入重定向,允许你将一个文件重定向到bc命令来处理。然后,这同样会叫要困惑,因为你必须将表达式存储到文件中。

    最好的办法是使用内联输入重定向,允许你直接在控制台重定向数据。在shell脚本中,你可以将输出赋给一个变量:

    variable=`bc << EOF
    options
    statements
    expressions
    EOF
    `

    EOF文件字符串标识了内联重定向数据的开始和结尾。记住仍然需要反引号来将bc命令的输出赋给变量。例如:

    #!/bin/bash
    
    var1=10.46
    var2=43.67
    var3=33.2
    var4=71
    
    var5=`bc << EOF
    scale = 4
    a1 = ($var1 * $var2)
    b1 = ($var3 * $var4)
    a1 + b1
    EOF
    `
    
    echo The final answer for this mass is $var5


     

    展开全文
  • shell的数值计算,小数计算

    千次阅读 2015-07-28 18:25:23
    shell脚本中,可以进行数值计算,如加减乘除,通过expr、let、(())等完成,文章介绍:...shell小数计算 通过bc,awk和nawk工具等完成 使用bc的代码如:click=`awk -F"\t" '$1==

    shell脚本中,可以进行数值计算,

    如加减乘除,通过expr、let、(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14166193
    但是上面的运算只支持整数。
    小数计算怎么办?
    

    shell中小数计算
    通过bc,awk和nawk工具等完成
    使用bc的代码如:

    click=`awk -F"\t" '$1==2 {print $2}' ctr_result.txt`
    show=`awk -F"\t" '$1==1 {print $2}' ctr_result.txt`
    ctr=`echo "scale=4;$click/$show"| bc`
    其中,echo "scale=4;$click/$show"| bc完成小数计算,
    scale参数指定小数点后的保留位数,这里保留4位。
    ctr_result.txt内容为 
            1 12
            2 10
    通过awk获取两个参数
    当然,也可以直接用awk完成小数计算:
        。。。
    
    展开全文
  • Shell小数计算的两种方式

    万次阅读 2018-12-28 21:02:32
    要借助bc命令,可以说bc是一个计算器,也可以说bc是个微型编程语言,反正当作工具来用,还是很方便,特别是小数计算。必须借助bc命令。 方式一: linux:~# var1=5 linux:~# var2=35.14 linux:~# var3=$(echo "...

    在Shell中,不能用计算整数的方式来计算小数。要借助bc命令,可以说bc是一个计算器,也可以说bc是个微型编程语言,反正当作工具来用,还是很方便,特别是小数计算。必须借助bc命令。

    方式一:

    linux:~# var1=5
    linux:~# var2=35.14
    linux:~# var3=$(echo "scale=4; $var2 / $var1" | bc)
    linux:~# echo $var3
    7.0280

    方式二:

    linux:~# var3=$(bc <<EOF
    >scale = 4
    >var1 = 5
    >var2 = 35.14
    >var2 / var1
    >EOF)
    linux:~# echo $var3

     

    展开全文
  • linux shell 计算小数

    千次阅读 2011-08-15 10:32:00
    利用bc计算器实现小数的运算. [root@c0109 ~]# cat s.sh #!/bin/sh a=3.1415926 b=`echo "scale=5;$a/2"|bc` echo $a, $b [root@c0109 ~]# sh s.sh 3.1415926, 1.


    利用bc计算器实现小数的运算.

    [root@c0109 ~]# cat s.sh
    #!/bin/sh
    a=3.1415926
    b=`echo "scale=5;$a/2"|bc`
    echo $a, $b
    [root@c0109 ~]# sh s.sh
    3.1415926, 1.57079
    [root@c0109 ~]# 


    展开全文
  • shell计算小数

    2011-05-29 18:53:00
    今天朋友给我处了一道难题 有一组数据,数据格式如下:每行一个数据,以列的形式存在,...用这些数据按照以下公式进行计算: 在讲解这个公式之前我先给大家介绍一下以下几个变量,帮助大家理解这个公式 ...
  • 最近的脚本因为涉及到一些计算,比方乘以80%,乘以1.2,除以80%这种的,有时候希望能得到小数,有时候希望结果是截断小数的,但是实际计算的时候还是迷迷糊糊的,所以特此整理一下。 1.首先来几个实验验证一下:从...
  • bc命令可以计算以字符串形式存在的表达式 在表达式前加上scale=小数位数; 可以限定计算结果的小数位数,例如 $echo "scale=2;10/3" | bc 3.33
  • shell 数学计算

    2017-11-05 16:35:52
    shell 数字运算分两类: 整数运算,小数运算 整数运算,2种: let c=$a+$b c=$[ $a+$b ] 小数运算: c=`echo "scale=2 ; $b/$a"|bc ` demo : #!/bin/bash function test1 {  a=2  b=3  ...
  • shell 计算

    2016-12-08 21:06:00
    1、整数计算 1 n=$((20/7)) 2 echo $n 输出 2(注意必须是两个括号) exper 20 / 5 / 3 ...2、小数计算 1 bc <<< 'scale=4;20+5/2' 输出22.5000 awk"BEGIN {print (20+5)...
  • shell 除法显示小数

    千次阅读 2019-02-26 11:19:20
    shell计算中使用除法,基本默认上都是整除。 比如: num1=2 num2=3 num3=`expr $num1 / $num2` 这个时候num3=0 ,是因为是因为expr不支持浮点除法 解决的方法: num3=`echo "scale=2; $num1/$num2" | bc` ...
  • shell除法显示小数

    万次阅读 2015-01-05 15:50:43
    shell计算中使用除法,基本默认上都是整除。 比如: num1=2 num2=3 num3=`expr $num1 / $num2` 这个时候num3=0 ,是因为是因为expr不支持浮点除法 解决的方法: num3=`echo "sclae=2; $num1/$num2" | bc` ...
  • 其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,但是可以使用“bc”这个高精度的计算器工具来帮助,另外,也可以在Bash中调用“awk”脚本来处理浮点运算。1. 用bc来处理计算(包括整型和浮点计算)bc – An ...
  • shell 计算磁盘使用率

    千次阅读 2019-05-30 17:33:01
    shell bc命令选项scale:可以设置计算结果的小数位数;但是scale只对除法、取余、乘幂有效,对乘法就无效。 #!/bin/bash #下面注释部分为各个分区的使用率,不是磁盘的使用率 #df -h|sed '1d;/ /!N;s/\n//;s/ \+/ /;...
  • Linux小数数值计算之bc命令

    万次阅读 2018-05-16 18:55:25
    前言 bc命令的基本用法 ...Linux Shell进行数值计算的时候, 使用expr,很麻烦,乘号啊什么的还需要转译, 使用美刀符($)加中括号,却只局限于整数计算, 这里介绍一下Linux的bc命令,它相当于L...
  • shell变量的数值计算

    2019-09-24 01:17:13
    shell中常见的算术运算命令如下 1、(()) 用于整数运算的常用运算符,效率很高 2、let 用于整数运算,类似于 (())...6、awk 即可用于整数计算,也可以用小数运算 7、declare 定义变量和属性, -i 参数可以用于定义...
  • bc awk 小数 浮点 计算 比较 Linux bash

    千次阅读 2017-07-01 19:59:59
    最近学习shell,使用的时候发现无法计算小数,遂来翻阅资料,以做记录: 感谢原博主: http://blog.csdn.net/stormbjm/article/details/19128023 linux bash bc awk 浮点 计算 比较 Bash中的变量没有数据...
  • Shell——awk实现计算

    千次阅读 2018-09-03 16:05:04
    利用awk进行运算的效果也很好,适合小数和整数,特别是命令行的计算,尤其是小数,运算很精确,好用   [root@115 scripts]# echo "7.7 3.8"|awk '{print ($1-$2)}' 3.9   [root@115 scripts]# echo ...
  • 文章目录介绍交互式免交互计算shell脚本实例 介绍 刚开始接触shell编程的时候,我们可能只是能对给定的整数,进行四则运算。恰恰Bash也仅支持对整数的四则运算,不支持小数运算。如果我们在脚本中的小数进行运算,...
  • 第一种: ... echo "2 + 7" |bc #bc用来计算,可以计算小数 echo "scale=3; 8/3" |bc #scale指定小数点位数为3 第三种: echo $(( 2 + 7 )) #一定要空格 第四种: echo $[ 2 + 7 ] #同3 ...
  • Shell数学运算数学运算符合和指令1、运算符号1.1、运算符号说明1.2、运算符号使用事项2、计算命令2.1、运算命令说明2.2、运算命令使用实例2.2.1、(( ))命令:整数运算2.2.1、bc 命令:小数运算2.2.1.1、在 Shell 中...
  • 4 bc(可计算小数) 5 declare(typeset) 6 read 变量的数值计算常见的有如下几个命令: (())、let、expr、bc(小数)、$[],其它都是整数。 运算符 意义 ++ - - 增加及减少,可以前置也可以放在结尾 ...
  • 脚本中调用bc计算指定小数位的百分数 打算设计一套性能统计脚本,记录各服务器的各种状态值,并对一些可以计算百分比的地方进行计算并统计这里的思路是用shell脚本进行计算数据并统计,当然也会保留原始的数据,以...
  • shell 是不支持小数计算的 选项值 -i:强制进入交互式模式; -l:定义使用的标准数学库 ; -w:对POSIX bc的扩展给出警告信息; -q:不打印正常的GNU bc环境信息; -v:显示指令版本信息; -h:显示指令的...
  • 1. 读取文件的第一行:head -n +1 file.txt 读取文件的最后一行: tail -n -1 file.txt echo 12:30:55 | cut -d: -f 1 结果为12,意思为将字符串12:30:55以:符号进行...2. 小数计算 使用bc var1=3.55 var2=6....

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

shell小数计算