美文网首页Linux我用 LinuxLinux小推车
七.Shell之数字运算必会3类命令

七.Shell之数字运算必会3类命令

作者: Dakini_Wind | 来源:发表于2019-02-06 16:35 被阅读1次

整形数处理基本用法

先看如下命令:

$ var=1
$ var=$var+1
$ echo $var
1+1

可以看出,Shell中变量默认是按字符串进行处理的,但是我们想进行数字运算该怎么实现?
方法一:使用let命令
let "表达式即可" //无空格""可以省略

$ var=1
$ let var++
$ echo $var
2
$ let "var++"
$ echo $var
3

方法二:使用declare -i定义整型变量
declare -i [变量名] 直接定义为整形变量,该变量只能作为整数进行存储,如果将字符进行存储,该变量值将变为0

$ declare -i k
$ k=k+1
$ echo $k
1
$ k=k+1
$ echo $k
2
$ k=qwer
$ echo $k
0

方法三:使用(( ))处理表达式

$ k=0
$ echo $((++k))
1

expr处理整数运算

格式:

expr ARG1 [OP] ARG2

操作符(OP)有:|、&、<、<=、=、>=、>、!=、+、-、*、/、%,要注意的是:
1.元字符(*)不可以直接使用,需要用进行转义;
2.ARG1、OP、ARG2三者之间必须有空格;
3.=为比较运算符,并不是赋值。
Demo:

$ expr 99 = 99
1
$ expr 8 * 8
expr: syntax error: unexpected argument “公共”
#我觉得这里*将作为通配符进行匹配到第一个目录
$ expr 8 \* 8
64
$ expr 8 = 8
1

bc运算器

bc是bash中最常用的浮点数运算工具,其特点如下:

  • 整型数、浮点数
  • 简单变量和数组变量
  • c语言风格注释(/.../)
  • 表达式
  • 复杂程序结构(如if-then)
  • 函数
直接使用bc:
$ bc -q #-q不输出版本信息
1/2
0
scale=10
1/2
.5000000000
7/3
2.3333333333
quit
$

不设置scale结果将自动取整

通过管道使用bc:
$ echo "scale=8;99*99" | bc
9801
$ num=7
$ var=`echo "$num^5" | bc`
$ echo $var
16807

相关文章

  • 七.Shell之数字运算必会3类命令

    整形数处理基本用法 先看如下命令: 可以看出,Shell中变量默认是按字符串进行处理的,但是我们想进行数字运算该怎...

  • Shell 学习

    shell 变量 shell 参数传递 shell 数组 shell 运算符 shell echo 命令 prin...

  • Shell 概述

    学习 Shell 主要包括的内容: Shell 脚本入门 Shell 变量 Shell 内置命令 Shell 运算...

  • Shell 教程

    Shell 变量 Shell 传递参数 Shell 数组 Shell 基本运算符 Shell echo 命令 Sh...

  • 4、Shell的条件测试

    shell的条件测试 符号说明()子shell中执行(())数值比较,运算C 语言$()命令替换$(())整数运算...

  • shell运算详解

    shell中常见的运算命令 运算操作符与运算命令意义(())用于整数运算的常用运算符,效率很高let用于整数运算,...

  • Shell编程—【02】命令替换、算数运算与定义变量

    Shell编程系列 https://www.jianshu.com/nb/37140890 命令替换、算数运算 与...

  • shell中使用命令&&\||\{}

    shell中&&和||的使用方法 &&运算符: command1 && command2 &&左边的命令(命令1)...

  • Shell编程-运算符

    Shell运算符 一. declare命令 declare [+/-] [选项] 变量名 选项: - :给变量设定...

  • 数值计算与条件判断

    算术运算命令在shell脚本编程中,可以使用的运算符很多,和C语言基本一致我们需要了解掌握的是一些运算命令(())...

网友评论

    本文标题:七.Shell之数字运算必会3类命令

    本文链接:https://www.haomeiwen.com/subject/ykcisqtx.html