首页 > 系统相关 >Shell | 数值运算

Shell | 数值运算

时间:2023-07-03 13:45:12浏览次数:32  
标签:10 Shell 运算 expr 数值 echo 命令 let

Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令

Shell 中常用的数学计算命令如下所示:

  • $((expression)) 操作符:可以进行基本的整数运算。

  • let:对整数进行数学运算,类似于 $((expression)) 操作符。

  • expr:可以进行基本的整数运算,如加减乘除、取模等。

  • bc:可以进行任意精度的数值运算,包括整数和浮点数运算。

$((expression)) 操作符

$((expression)) 操作符可以进行基本的整数运算。语法格式就是:$((expression))这种格式。

例如:

$ echo $((1 + 2))
3
$ echo $((1+2))
3
$ echo $((10 - 5))
5
$ echo $((3 * 4))
12
$ echo $((10 / 3))
3
$ echo $((10 % 3))
1

$((expression))操作符中,运算符和操作数之间可以用空格隔开,也可以不用空格隔开。

上面的例子只是说明这样可以运算,但是是否可以把计算出来的值进行赋值啊?

$ a=$((2 + 2))
$ echo $a
4

我们可以通过这样的方式进行赋值。

let 命令

let 命令可以进行基本的整数运算,类似于 $((expression)) 操作符。let 命令只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。

let 命令的语法格式为

let 表达式
或者
let "表达式"
或者
let '表达式'

例如:

# 说明,如果使用 `let 表达式` 这样的命令,`a=1+2`表达式之间不能有空格。也就是说运算符和操作数之间不能用空格隔开
$ let a=1+2
$ echo $a
3

# 使用 `let "表达式"` 命令
$ let "b=1+2"
$ echo $b
3

# 使用 `let '表达式'` 命令
$ let 'c=1+2'
$ echo $c
3

# 使用 `let "表达式"`或`let '表达式'` 命令时,`'d = 1 + 2'`表达式之间可以有空格。也就是说运算符和操作数之间可以用空格隔开。
$ let 'd = 1 + 2'
$ echo $d
3

# let 命令支持一次性计算多个表达式
$ let aa=1+2 bb=2+3
$ echo $aa $bb
3 5

let还可以进行其他运算符的计算:

$ let "a = 1 + 2"
$ echo $a
3
$ let "b = 10 - 5"
$ echo $b
5
$ let "c = 3 * 4"
$ echo $c
12
$ let "d = 10 / 3"
$ echo $d
3
$ let "e = 10 % 3"
$ echo $e
1

expr 命令

expr 命令可以进行基本的整数运算,如加减乘除、取模等。也可以处理字符串。

expr 命令的语法格式为

# expr 命令的语法格式中,运算符和操作数之间必须用空格隔开
$ expr 1 + 2
3

$ expr 1+2
1+2

# 而且不支持像let命令中表达式可以加`""`或`''`
$ expr "1+2"
1+2

$ expr "1 + 2"
1 + 2

# expr 命令中的乘号 * 需要用反斜杠 \ 转义
$ expr 3 * 4
expr: 语法错误

$ expr 3 \* 4
12

例如:

$ expr 1 + 2
3
$ expr 10 - 5
5
$ expr 3 \* 4
12
$ expr 10 / 3
3
$ expr 10 % 3
1

bc 命令

bc 命令可以进行任意精度的数值运算,包括整数和浮点数运算。

例如:

$ echo "10 + 5" | bc
15
$ echo "3 * 4" | bc
12
$ echo "scale=2; 10 / 3" | bc
3.33

其中,"3 * 4" | bc中的|两边可以不加空格。bc 命令中的 scale 参数用于控制浮点数的小数位数。

标签:10,Shell,运算,expr,数值,echo,命令,let
From: https://www.cnblogs.com/zhangxuegold/p/17522553.html

相关文章

  • PowerShell系列零:为什么值得学习
    自我介绍我的职业是网管,工作环境是中小企业。从业十几年了,一直都是一个人一个部门,什么都做。硬件、弱电、网络、系统、服务器、冗余、灾备。大概从5-6年前开始接触PowerShell,尝试着在日常工作中把常用的操作从GUI转向到使用PowerShell去操作。基本上就是总结一下哪些问题是经常发......
  • 在 Linux 上使用的五个超级神奇的 Shell 别名
    导读在这篇文章中,我想告诉你一些作为工程师我每天都在使用的缩写,这些缩写是绝对的生命救星如果你还没有充分利用Shell缩写,那么你正在浪费宝贵的时间。一遍又一遍地重复输入相同的内容是无聊、单调而且效率低下的。为什么要花时间记住冗长的命令,当你可以简化它们呢?缩写是......
  • PowerShell 中有许多用于获取信息的 Get 命令
    PowerShell中有许多用于获取信息的Get命令。以下是一些常用的Get命令示例:Get-Process:获取正在运行的进程列表。Get-Service:获取正在运行的服务列表。Get-EventLog:获取事件日志条目。Get-Content:获取文件的内容。Get-ChildItem:获取文件和文件夹的列表。Get-WmiObject:获......
  • shell语句中安装oracle准备
    #!/bin/bashread-p"请输入管理组名称"dbaread-p"请输入安装组名称"oinstallread-p"请输入用户名称"testerread-p"请输入用户密码"pass#定义editenv函数editenv(){cd/home/$testerecho"ORACLE_BASE=/oracle">>/home/......
  • 1.5 编写自定位ShellCode弹窗
    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易ShellCode可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过,那么基址将会发生变化,此时如果再次调用基址参数则会......
  • BackUpLogView 系列 - Powershell 在任务计划中执行脚本
     在windows系统中,使用powershell执行脚本,请在写字板中调整相关参数,注意把参数一次性拷贝完整。之所以选择带参数的原因,是避免powershell打开时出现安全性限制对话框导致执行失败powershell.exe-NonInteractive-NoProfile-NoLogo-ExecutionPolicyUnrestricted-File......
  • PowerShell脚本数字签名错误
    1.以管理员身份打开powershell,使用get-executionpolicy-list查看策略设置2.将所有的scope的值为:undefined具体设置的命令是:Set-ExecutionPolicy-ExecutionPolicyundefined-ScopeLocalMachine3.找到报错中提示中有问题的xxx.ps1脚本,选中该脚本,右键选择属性,然后勾选“解......
  • linux 中 shell脚本实现提取gff文件中的最长转录本
     001、数据和脚本[root@PC1test2]#lsGCF_001704415.1_ARS1_genomic.gffrecord.sh 002、脚本[root@PC1test2]#catrecord.sh##脚本内容#!/bin/bas##step1:eliminatetheinfluenceofpseudogenegrep-v"^#"GCF_001704415.1_ARS1_genomic.gff|......
  • Linux|常用命令|SSH远程执行Shell
    #bash/python命令语法#ssh语法同bash/python不同,避免混淆bashscript.shparams4scriptpythonscript.pyparams4scriptbash-c""bash-c''python-c''python-c""一行和多行只是写法不同打包成函数和文件没有本质区别注意Shell会解释输入,转译字符、变量生效推......
  • 2022-2023 春学期 矩阵与数值分析 考试的范围
    2022-2023春学期矩阵与数值分析考试的范围原文考试的范围......