shell中数字计算方法(bc/expr/$(())/let/awk)

1.bc

常用计算工具,而且支持浮点运算:

[[email protected] shell]# echo 1+1 | bc

2

浮点数精度问题未解决

[[email protected] shell]# echo "1.2*1.2" | bc

1.4

[[email protected] shell]# echo "scale=2;1.2*1.2" | bc

1.44

[[email protected] shell]# echo "5.0/3.0" | bc

1

[[email protected] shell]# echo "scale=2;5.0/6.0"|bc

.83

 

2.expr

不支持浮点运算,注意运算符左右都有空格,使用乘号时,必须用反斜线屏蔽其特定含义

[[email protected] shell]# expr 10 + 10

20
[[email protected] shell]# expr 1500 + 900

2400
[[email protected] shell]# expr 30 / 3

10
[[email protected] shell]# expr 30 / 3 / 2

5

[[email protected] shell]# expr 30 \* 3

90

3.$(())

同expr,不支持浮点数运算

[[email protected] shell]# echo $((1+1))

2

[[email protected] shell]# echo $((2*3))

6

[[email protected] shell]# echo $((6/2))

3

[[email protected] shell]# echo $((6/5))

1

 

4.let

不支持浮点数运算,而且不支持直接输出,只能赋值

[[email protected] shell]# let a=10+10

[[email protected] shell]# echo $a

20

[[email protected] shell]# let b=50/5

[[email protected] shell]# echo $b

10

[[email protected] shell]# let c=6*5

[[email protected] shell]# echo  $c

30

[[email protected] shell]# let c=6/5

[[email protected] shell]# echo  $c

1

 

5.awk

普通的运算:

[[email protected] shell]# echo|awk ‘{print(1+1)}‘

2

[[email protected] shell]# echo|awk ‘{print(1/2)}‘

0.5

[[email protected] shell]# echo|awk ‘{print(1/3)}‘

0.333333

[[email protected] shell]# echo|awk ‘{print(3*5)}‘

15

控制精度(printf):

[[email protected] shell]# echo | awk ‘{printf("%.2f \n",1/2)}‘

0.50

[[email protected] shell]# echo | awk ‘{printf("%.4f \n",1/3)}‘

0.3333

传递参数:

[[email protected] shell]# echo | awk -v a=5 -v b=6 ‘{printf("%.4f \n",a/b)}‘注:该方法a,b不需加$符

0.8333

[[email protected] shell]# a=5

[[email protected] shell]# b=6

[[email protected] shell]# echo|awk "{print($a/$b)}"注:该方法需在大括号外打双引号

0.833333

时间: 2024-11-07 07:31:12

shell中数字计算方法(bc/expr/$(())/let/awk)的相关文章

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

shell中awk用法

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

shell中怎么判断输入的是否是数字

在shell中我们经常要面临一个问题就是,怎么判断我交互式的前端,使用者输入的是否是数字呢?这里小编我也就会两种方法,所以今天就在这说一说 第一种:sed格式 首先:我们先(在命令行直接输出模拟一下,如果都正确再在shell脚本中进行书写.)直接echo输出一下 echo "111asd" 第一步:思想 然后我们就要想一下我们要说用sed判断,但是sed的最主要的功能是什么?替换!!!当然是替换,既然是替换那么我们能不能直接把echo输出的数字直接替换掉,然后看这个输出还剩下什么呢?如

shell 中 grep、sed、awk 命令

grep 命令 grep命令基本语法 grep命令是打印匹配文本行,其全称为 Global Search Regular Expression and Print out the line:基本语法如下: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 其中,OPTIONS表示选项:PATTERN表示匹配模式,匹配模式可以是字符串.变量.正则表达式,若匹配模式中含义空格,则需要使用双

linux shell中的比较符号与特殊符号介绍

shell字符串比较.判断是否为数字  二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.  整数比较  -eq 等于,如:if [ "$a" -eq "$b" ]  -ne  不等于,如:if [ "$a" -ne "$b" ]  -gt 大于,如:if [ "$a" -gt "$b" ]  -ge 大于等于,如:if [  "$a" -ge "

shell 中的常用技巧

本文收集了一堆的shell脚本技巧,主要方便自己查阅,技巧出自脚本之家中的博客,自己也增加了实现目的的其他方法,方便以后自己查阅: 0. shell 调试 代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x1. 用 && || 简化if else 代码如下: gzip -t a.tar.gz if [[ 0 == $? ]]; then     echo "good zip" else     echo "

Shell中字符串、数值的比较

原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较:    -eq       等于,如:if [ "$a" -eq "$b" ]    -ne       不等于,如:if [ "$a" -ne "$b" ]    -gt       大于,如:if [ "$a" -gt "$b&

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

shell中常用的特殊符号

在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# [email protected] `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 注释字符 该句不会被执行 ~ 帐户的 home 目录 用户的