首页 > 系统相关 >shell_脚本开发_数值运算_bc_awk

shell_脚本开发_数值运算_bc_awk

时间:2023-10-10 10:49:29浏览次数:38  
标签:tmp shell bc echo awk root localhost

bc命令

bc命令是当作计算器的来用的,并且当作命令行来的,一般结合管道符使用(相当于echo把字符打印出来传递给bc处理

[root@localhost tmp]# bc  ###直接输入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'. 
1+3
4
123.23+134
257.23
2.2-1.1
1.1
^C
(interrupt) Exiting bc.   
[root@localhost tmp]#  ###ctr+c退出
###通常结合管道符来使用
[root@localhost tmp]# echo "4*4"
4*4
[root@localhost tmp]# echo "4.2*4"|bc  ###相当于echo把字符打印出来传递给bc处理(重要)
16.8
[root@localhost tmp]# num=5
[root@localhost tmp]# result=`echo $num*4|bc`
[root@localhost tmp]# echo $result
20
[root@localhost tmp]# 

  • 应用实例

    ##eg1:计算1~100的总和;就用公式1+2+3...+97+98+99+100直接打印输出
    [root@localhost tmp]# cat   testbc.sh 
    #!/bin/bash
    
    #
    all=0
    a=1
    while  [ $a -le 100 ]
    do
       all=$all+$a
       a=$(($a+1))
    done	
       echo $all=`echo $all|bc`
    [root@localhost tmp]# sh testbc.sh 
    0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100=5050
    [root@localhost tmp]# 
    
    ###################方法2
    [root@localhost tmp]# seq -s + 1 100;echo = ; echo `seq  -s + 1 100`|bc
    1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
    =
    5050
    [root@localhost tmp]# 
    ###################################方法3 tr替换命令  “ ” 替换为+
    [root@localhost ~]# echo {1..100}|tr " " "+" 
    1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
    [root@localhost ~]# echo {1..100}|tr " " "+" |bc
    5050
    ####方法4用双小括号,不用bc
    [root@localhost ~]# [root@localhost ~]# echo $((`echo {1..100}|tr " " +`))
    5050
    [root@localhost ~]# 
    ####方法5 用expr 命令;注意+附近要有空格(因为expr命令是接收多个参数的形式来执行的)
    
    [root@localhost ~]# expr `seq -s " + " 1 100`
    5050
    [root@localhost ~]# 
    
    
    
awk支持数值计算

awk也支持小数运算,也支持复杂运算

  1. 先给awk传递数据
  2. 通过管道符交给awk
  3. awk定义动作 打印输出
1. 先给awk传递数据
2. 通过管道符交给awk
3. awk定义动作 打印[root@localhost ~]# echo "2.1 1.1"|awk '{print $1+$2}'
3.2
[root@localhost ~]# 
###1. 先给awk传递数据  
###2. 通过管道符交给awk
###3. awk定义动作 打印参数1+参数2
############也支持复杂的运算
[root@localhost ~]# echo "2.1 1.1"|awk '{print $1+4*$2}'
6.5
###
中括号运算
###语法
$[表达式]
[root@localhost ~]# echo $[3+5]
8
[root@localhost ~]# echo $[3.1+5]
bash: 3.1+5: 语法错误: 无效的算术运算符 (错误符号是 ".1+5")

标签:tmp,shell,bc,echo,awk,root,localhost
From: https://www.cnblogs.com/xjianbing/p/17754007.html

相关文章

  • shell_条件判断_条件变量测试
    条件测试变量测试变量测试就是把字符串信息,写入到变量中注意!!!对变量测试,必须加双引号[root@localhosttmp]#[-e"$file1"]&&echo"该文件存在"||echo"$file1文件不存在"风景.jpg文件不存在[root@localhosttmp]#touch风景.jpg[root@localhosttmp]#[-e"$file1......
  • shell_条件判断_[]中括号
    条件测试条件测试[]中括号脚本中经常进行条件测试,用的最多的,都是中括号[]test和[]中括号的作用是意义的;只是中括号[],前后的空格必须有注意!!!中括号[],前后的空格必须有在条件测试中使用变量,必须添加双引号[-n"${filename}"][root@localhosttmp]#[-f"$......
  • shell_脚本开发_数值运算
    shell中的数值运算shell中常见的算术运算符运算符意义(*表示常用)+、-加号(正号)、减号(负号)**、/、%乘号、除号、取余(取模)***幂运算*++、--增加及减少,可前置也可放在变量结尾*!、&&、||逻辑非(取反)、逻辑与(and)、逻辑或(or)*<、<=、>、>=比......
  • shell_脚本开发_数值运算_expr命令
    expr命令简单的计算器执行命令可以用expr--help查看文档#expr是以传入参数的形式进行计算的,它基于空格传入参数,但是在shell里的一些元字符(*啊这类)都是有特俗含义的,需要转义[root@localhost~]#expr2+57[root@localhost~]#expr2*5expr:语法错误[root@localh......
  • powershell 获取文件夹的大小
        powershell获取文件夹的大小$startFolder="C:\users"  $colItems=(Get-ChildItem$startFolder |Where-Object{$_.PSIsContainer-eq$True}|Sort-Object)foreach($iin$colItems)  {    $subFolderItems=(Get-ChildItem$i.FullName......
  • 【ABC322C】题解
    AtCoderBeginnerContest322ProblemC-Festival题解Meaning-题意简述给定\(N\)和\(M\),还有\(M\)个正整数\(a_1\sima_n\),对于每个\(i\len\),求出\(a\)中第一个大于等于\(i\)的整数和\(i\)的差。Solution-题解思路题目保证\(a\)数组单增,所以就可......
  • 【ABC322D】题解
    AtCoderBeginnerContest322ProblemD-Polyomino题解Meaning-题意简述给定三个字符矩阵,求它们能不能拼在一起变成一个\(4\times4\)的全部是#的矩阵。Solution-题解思路大模拟。说简单也不简单,很复杂;但是说难呢,又不难。思路:搜索每一个矩阵的状态。0x001旋......
  • 一次性按要求替换多个文件的名称:PowerShell
      本文介绍基于PowerShell语言,对文件夹中全部文件的名称加以批量替换、修改的方法。  在之前的文章Python批量自动修改大量文件的名称中,我们介绍了基于Python语言,批量修改大量文件的名称的方法。当时我们修改文件名的需求比较复杂,因此选择了用Python语言来实现;而在我们的需求......
  • Shell基本命令小结
    一、mkdir创建目录和rmdir删除目录1创建目录创建单级目录:mkdiraaa创建多级目录mkdir -p bbb/ccc2删除目录删除空目录:rmdiraaa删除非空目录:(1)rmdirccc(2)rmdirbbb/ 二、touch创建文件和rm删除文件创建文件:touchaaa.txt创建多个文件:touchbbb.txtccc.txt 删除文......
  • 仅作笔记用:PowerShell 关闭显示器
    使用这个命令可以手动关闭显示器,这样就不需要第三方工具甚至自己写代码了。(Add-Type'[DllImport("user32.dll")]publicstaticexternintSendMessage(inthWnd,inthMsg,intwParam,intlParam);'-Namea-Pas)::SendMessage(-1,0x0112,0xF170,2)也可以写成CMD的形式......