Linux shell 脚本中变量的数学计算【转】
本文转载自:http://blog.csdn.net/qinghezhen/article/details/9194287
首先从一个例子说起:
- x=1+1
- echo $x
你是不是期待着输出2啊?让你失望了,这样输出的结果是1+1。
为什么呢?
这是因为在shell script中变量类型默认为“字符串”,所以若不指定变量类型,1+1是一个“字符串”而不是“计算式”。
那么怎么得到我们想要的结果呢?
方法很多,但是总结起来就是两种,一种就是生命变量的类型。另一种是对特定的计算式进行处理。
1)首先看第一类方法:声明变量的类型
我对上述程序做出以下修改:
- declare -i x
- x=1+1
- echo $x
在上述脚本中我把x声明为整型数字(integer)类型,这时输出结果为2
或者你可以这么写:
- declare -i x
- declare -i y
- x=1
- y=2
- x=$x+$y
- echo $x
输出结果为3,假如我没有声明 x, y 的类型为整型数字,那么输出结果是1+2
2)
a)使用let命令:(注意的是let仅支持整数运算)
- let 'x=1+1'
- echo $x
这时输出结果为2
b)使用$[ ]
- x=1
- y=2
- x=$[ x+y]
- echo $x
输出结果为:3
这里要注意的是注意:
- $[]将中括号内的表达式作为数学运算先计算结果再输出
- 对$[]中的变量进行访问时加不加$无所谓
- $[]支持的运算符与let相同,但也只支持整数运算
c)使用$(( ))
- x=1
- y=2
- x=$(( x+y))
- echo $x
输出结果是3
Linux shell 脚本中变量的数学计算【转】的更多相关文章
- 学习Linux shell脚本中连接字符串的方法
这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...
- Linux shell脚本中shift
Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). ...
- Linux shell脚本中shift的用法说明【转】
本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235 Linux shell脚本中shift的用法说明 shift命令用于对参数的移动 ...
- linux shell脚本中的延时
linux shell脚本中的延时 还是使用 sleep 或usleep函数. 详细如下: .sleep : 默认为秒. sleep 1s 表示延迟一秒 sleep 1m 表示延迟一分钟 ...
- linux shell脚本之-变量极速入门与进阶(1)
1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...
- Shell脚本中变量和函数变量的作用域
(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变 ...
- linux shell脚本中使用expect(脚本打开新终端自动远程连接顺便输一点指令)(巨坑)
放弃吧 我找了六个小时都没找到可以用的方案(指标题括号里的内容) 给个曲线救国的方法: 现把expect脚本写成一个文件 在另一个shell脚本中调用
- Linux shell 脚本中使用 alias 定义的别名
https://www.cnblogs.com/chenjo/p/11145021.html 核心知识点: 用 shopt 开启和关闭 alias 扩展 交互模式下alias 扩展默认是开启的,脚本模 ...
- linux shell脚本之-变量极速入门与进阶(2)
1,$$:显示当前的进程id号 ghostwu@dev:~/linux/shell/how_to_use_var$ cat show_pid.sh #!/bin/bash echo $$ ghostw ...
随机推荐
- Android开发——使用ADB Shell命令实现模拟点击(支付宝自动转账实现)
首先声明,本人反对一切利用技术的违法行为 本文的实现代码已经销毁,本文以介绍流程为主 1.这里所说的模拟点击不是在自己的APP里点击,点自己APP上的控件没什么好说的 不仅是支付宝转账,其他的获取别人 ...
- CentOS7中,vnc分辨率设置。
使用geometry参数进行调整 例如,我们需要将分辨率调整到800x600 [root@secdb ~]# vncserver -geometry 800x600 New 'secdb:5 (roo ...
- 洛谷P2527 [SHOI2001]Panda的烦恼
题目描述 panda是个数学怪人,他非常喜欢研究跟别人相反的事情.最近他正在研究筛法,众所周知,对一个范围内的整数,经过筛法处理以后,剩下的全部都是质数,不过panda对这些不感兴趣,他只对被筛掉 ...
- 【概率dp】D. Card Collector
https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/D [题意] 为了集齐n张卡片,必须要买多少袋零食?题目给定每种卡片出现在零食中的 ...
- 前端接收到的json的属性的首字母会自动变成小写,解决办法如下
使用的json包是alibaba.fastjson. 把TypeUtils.compatibleWithJavaBean = true; 如图位置:
- Attribute "not-null" must be declared for element type "property"解决办法
Attribute "not-null" must be declared for element type "property"解决办法 在hiberante ...
- Codeforces947D. Picking Strings
$n \leq 100000,m \leq 100000$,给长度$n$的字符串$s$和$m$的字符串$t$,只含ABC.定义串$a$可以经过任意次如下操作变成其他串. 现在$q \leq 10000 ...
- 关于Linux内核学习的一点点总结
关于Linux内核学习的一点点总结 关键词:Linux, 操作系统,内核 博客列表 由反汇编C程序来理解计算机是如何工作的 通过分析一个简化版时间片轮转多道程序内核代码来认识操作系统中的进程调度 通过 ...
- 从Java代码到字节码
http://www.importnew.com/13107.html http://blog.csdn.net/dc_726/article/details/7944154/ http://www. ...
- Mac BOOK PRO U盘安装windows7、8及8.1
http://v.youku.com/v_show/id_XMTI1NjgzMzU0NA==.html http://jingyan.baidu.com/article/1709ad80b3d2f44 ...