linux shell进行数值计算

2023-11-20

出于项目需要,需要用脚本执行计算

最简单的方法1:$((这里写算式,可以写变量))

~/Desktop$ cat test.sh
a=102
c=$((a + 123))
echo a: $a
echo \$\(\(a + 123\)\): $c

~/Desktop$ ./test.sh
a: 102
$((a + 123)): 225

最简单的方法2:$[这里写算式]

~/Desktop$ cat ./test.sh
a=102
c=$[a + 123]
echo a: $a
echo \$\[a + 123\]: $c

~/Desktop$ ./test.sh
a: 102
$[a + 123]: 225

另外还有命令行的方式:declare和expr

declare -i的方式,后面的算式不能有空格,有空格相当于新的参数

~/Desktop$ cat ./test.sh
a=102
declare -i c=$a+123
echo a: $a
echo declare -i \$a + 123: $c

~/Desktop$ ./test.sh
a: 102
declare -i $a + 123: 225

####加个空格
~/Desktop$ vi ./test.sh
~/Desktop$ cat ./test.sh
a=102
declare -i c=$a +123
echo a: $a
echo declare -i \$a + 123: $c

~/Desktop$ ./test.sh
./test.sh: 第 2 行:declare: “+123”: 不是有效的标识符
a: 102
declare -i $a + 123: 102

expr的方式:

~/Desktop$ cat test.sh
a=102
c=$(expr $a + 123)
echo a: $a
echo expr \$a + 123: $c

~/Desktop$ ./test.sh
a: 102
expr $a + 123: 225

注意:$(())是计算,$()是执行命令

另:计算数值后进行比较

比较:

1、-gt:大于,greater than。

2、-eq:等于,equal。

3、-lt:小于,less than。

4、-ge:大于等于,greater than or equal。

5、-le:小于等于,less than or equal。

6、-ne:不等于,not equal。

多个条件:

1、-a:且,and。

2、-o:或,or。

多个条件:

1、&&:用来执行条件成立后执行的命令。

2、||:用来执行条件不成立后的执行命令。

单个条件:

~/Desktop$ cat test.sh
a=102
c=$(expr $a + 123)
echo a: $a
echo expr \$a + 123: $c

# 比较
if [ $a -gt 200 ]; then
	echo \$a = $a \> 200
elif [ $a -gt 100 ]; then
	echo \$a = $a \> 100
else
	echo \$a = $a \<= 100
fi

# -a连接符
if [ $a -gt 100 -a $c -le 225 ]; then
	echo aaaa match 100 - 225
fi

# || 逻辑运算符
if [ $a -ge 123 ] || [ $c -gt 225 ]; then
	echo oror match 123 225;
else
	echo oror not match a ge 123 and c gt 225
fi

if [ $a -ge 102 ] || [ $c -gt 555 ]; then
	echo oror match a ge 102 or c gt 555;
else
	echo oror not match a ge 102 and c gt 555

~/Desktop$ ./test.sh
a: 102
expr $a + 123: 225
$a = 102 > 100
aaaa match 100 - 225
oror not match a ge 123,c gt 225
oror match a ge 102 or c gt 555

注意if[]中的-a要放在[]里面连接多个比较,并且[]前后里外都要有空格,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux shell进行数值计算 的相关文章

  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec

随机推荐

  • Pipenv:作为 Python 开发人员为什么应该使用它

    Pipenv 是一个旨在将所有打包世界中最好的东西带到 Python 世界的工具 它将 Pipfile pip 和 virtualenv 整合到一个命令中 它会自动为您的项目创建和管理虚拟环境 并在您安装 卸载包时从您的 Pipfile 添
  • 大清相国 -陈廷敬

    以前都没听说过这个人 读了读 原来是康熙时的重臣 一开始 太完美了 为民做主 不爱权 不爱财 后来 明白不能让皇帝太难堪 不能让天下百姓知道居然这么多贪官 委屈求全 最后一举将高士奇等一起干掉 狠字当头 最后 装傻退出朝廷 在家养老 一句话
  • Kubernetes笔记(六):了解控制器 —— Deployment

    Pod 容器组 是 Kubernetes 中最小的调度单元 可以通过 yaml 定义文件直接创建一个 Pod 但 Pod 本身并不具备自我恢复 self healing 功能 如果一个 Pod 所在的节点出现故障 或者调度程序自身出现问题
  • C++---区间DP---加分二叉树(每日一道算法2023.4.28)

    题目 设一个 n 个节点的二叉树 tree 的中序遍历为 1 2 3 n 其中数字 1 2 3 n 为节点编号 每个节点都有一个分数 均为正整数 记第 i 个节点的分数为 di tree 及它的每个子树都有一个加分 任一棵子树 subtre
  • hello,os

    于渊的书确实不错 先看第一章 出了个hello os 用虚拟机搞的 引导区
  • C# 如何将SPL文件转换成EMF文件

    本文主要讲述如何将SPL文件转换成EMF文件 目录 一 什么是SPL文件和EMF文件 一 SPL文件 二 EMF文件 二 文件解析 一 SPL格式 二 打开SPL文件 三 解析SPL文件 三 编程思路 一 记录EMF文件的位置和大小 二 找
  • JS对象的深复制

    JS实现对象的深复制 function cloneObject source target var list number string boolean undefined null function if target undefined
  • 区块链的安全性与去中心化特点:深入探讨区块链技术的安全性和去中心化特点

    摘要 本文将深入探讨区块链技术的两个核心特点 安全性和去中心化 区块链作为一种分布式账本技术 通过其独特的安全性和去中心化特点 在许多领域引起了广泛关注 我们将分析区块链的安全性原理和其与去中心化的关系 以及区块链技术在保护数据安全和提供信
  • 【Web常规漏洞】SSRF服务端请求伪造漏洞

    文章目录 参考 概念 产生原因 可能存在漏洞的代码 漏洞分类 潜在危害 漏洞利用 漏洞防御 漏洞绕过 概念 SSRF Server Side Request Forgery 服务器端请求伪造 是一种利用漏洞伪造服务器端发起请求 一般情况下
  • windows服务器被当矿机的问题处理实战-conhosts.exe

    windows服务器被当矿机的问题处理实战 conhosts exe 服务器最近比较卡 调开任务管理器查看 CPU占用偏高 发现进程 conhosts exe 占用CPU 75 通过pid查询 该进程通过syn sent向陌生IP 163
  • STM32G30C8T6hal库串口非固定长度

    1 由于从标准库转到hal库 还是特别不适应 串口测试遇到了一下问题 记录一下 2 hal库串口的配置不再赘述 hal库串口接收完毕可调用回调函数 接收的字节为固定长度才会回调 感觉非常麻烦 而且要重新开启接收中断 特别不适用于项目 想按照
  • 最新网络工程毕设选题题目推荐

    文章目录 0 简介 1 如何选题 2 最新网络工程选题 2 1 Java web SSM 系统 2 2 大数据方向 2 3 人工智能方向 2 4 其他方向 4 最后 0 简介 学长搜集分享最新的网络工程专业毕设毕设选题 难度适中 适合作为毕
  • python爬虫,多线程与生产者消费者模式

    使用队列完成生产者消费者模式 使用类创建多线程提高爬虫速度 https sc chinaz com tupian index html https sc chinaz com tupian index 2 html https sc chi
  • elasticsearch 安装教程

    一 jdk安装 es要求jdk版本在1 8以上 所以先安装jdk1 8 安装步骤 1 安装完Centos6 5的Base Server版会默认安装OpenJDK 首先需要删除OpenJDK 命令 rpm qa grep java 显示如下
  • 头条员工自爆:拿遍BAT和TMD的offer,面试过于NB!

    最近看到一位今日头条员工在脉脉发帖称 最近两次找工作 BAT TMD的offer几乎拿了个遍 但一般一家只能待两年 原因是面试的时候表现过于NB 导致下家对自己期望值过高 实际工作中面临的阻力很大的时候就会退缩 自己的能力项可能是面试 每次
  • Android 网络管理

    系统中对网络的判断和选在是在Connectivityervice这个服务中来处理的 在系统启动的时候会启动这个系统服务 系统启动完毕后 ConnectivityService在系统启动的时候就启动了 在android内部 用framewor
  • 如何学好C语言的数据结构与算法?

    C语言的数据结构与算法 难就难在链表 学会了链表 可能后面就一点都不难了 书籍推荐 数据结构与算法分析 C语言描述版 要深入学习的话可以选择这本书 因为针对链表的讲解是比较详细的 所以可以很快理解链表 跟着书上一点点实现基本操作 增删改查
  • Vue中的过滤器

    过滤器 定义 对要显示的数据进行特定格式化后再显示 适用于一些简单逻辑的处理 语法 1 注册过滤器 Vue filter name callback 全局 或 new Vue filters 局部 2 使用过滤器 xxx 过滤器名 或 v
  • 动态修改日志级别,太有用了!

    首发于公众号 BiggerBoy 背景 我们在系统中一般都会打印一些日志 并且在开发 测试 生产各个环境中的日志级别可能不一样 在开发过程中为了方便调试打印了很多debug日志 但是生产环境为了性能 为了节约存储资源 我们会将日志级别设置为
  • linux shell进行数值计算

    出于项目需要 需要用脚本执行计算 最简单的方法1 这里写算式 可以写变量 Desktop cat test sh a 102 c a 123 echo a a echo a 123 c Desktop test sh a 102 a 123