shell编程中变量的运算 (shell 06)
主要包括以下3种
字符串操作
数学运算
浮点运算
一.字符串操作
字符串的连接
连接字2个字符串不需要任何连接符,挨着写即可
长度获取
expr length "hello"
expr length "$str" 变量名必须放在双引号里,否者语法错误
查找字符串中字符的位置
expr index "$str" CHARS
第一个是从1 开始的,查找不到返回 0 ,返回匹配到的第一个字符的位置
[root@localhost110 ~]# echo $str
hello word
[root@localhost110 ~]# expr index "$str" h [root@localhost110 ~]# expr index "$str" hel (只匹配h) [root@localhost110 ~]# expr index "$str" a
字符串截断
expr substr "$str" POS LENGTH
POS起始位置(包含),LENGTH 长度
[root@localhost110 ~]# expr substr "$str"
word
字符串匹配
expr "$str" : REGEXP (冒号前后都得有空格)
expr mathch "$str" REGEXP
必须完整匹配才行
[root@localhost110 ~]# echo $str
aBcD phP2016ajax
[root@localhost110 ~]# expr "$str" : '\([a-z]* [a-z]*\)'
aBcD phP
expr运算
http://www.cnblogs.com/HKUI/articles/6548798.html
二.数学运算
逻辑运算
数值运算
逻辑运算
&,|,<,>,=,!=,<=,>=
数值运算
+,-,*,/,%
expr expression
result=$[expression]
[root@localhost110 sh]# echo $num1,$num2,$num3
,,
[root@localhost110 sh]# expr $num1<$num2
-bash: : 没有那个文件或目录
操作符两边 要有空格
[root@localhost110 sh]# expr $num1\<$num2
<
[root@localhost110 sh]# expr $num1 \< $num2 [root@localhost110 sh]# expr $num1 = $num3 [root@localhost110 sh]# expr $num1 = $num2 expr中用=判断是否等
在[]中== [root@localhost110 sh]# res=$[$num1=$num3]
-bash: 1=1: attempted assignment to non-variable (error token is "=1")
[root@localhost110 sh]# res=$[$num1==$num3]
[root@localhost110 sh]# echo $res
1
数字运算
[root@bogon sh]# a=;b=;c=$a+$b;echo $c;
+
[root@bogon sh]# a=;b=;c=[$a+$b];echo $c;
[+]
[root@bogon sh]# a=;b=;c=$[$a+$b];echo $c; [root@bogon sh]# a=;b=2.5;c=$[$a+$b];echo $c;
-bash: +2.5: 语法错误: 无效的算术运算符 (错误符号是 ".5")
[root@bogon sh]# a=;b=2.10;c=`echo $a+$b|bc`
[root@bogon sh]# echo $c
3.10
浮点数运算
内建计算器 bc
bc能够识别:
数字(整型和浮点型)
变量
注释 (以 #开始的行 或者/* */)
表达式
编程语句 (如条件判断 :if-then)
函数
bc -q 能忽略版本信息等提示语
scale可设置精度
[root@localhost110 sh]# bc -q
/ scale=
/
3.3333
num1=;num2=
num1/num2
3.3333
quit
在脚本中使用bc
1.
var=`echo "options;expression" |bc `
[root@localhost110 sh]# res=`echo "scale=4;10/3" |bc`
[root@localhost110 sh]# echo $res
3.3333
.
res=`bc<<E
options
statements
expressions
E
`
[root@localhost110 sh]# res=`bc <<E
> a=
> b=
> scale=
> c=a/b
> c
> E`
[root@localhost110 sh]# echo $res
3.3333
shell编程中变量的运算 (shell 06)的更多相关文章
- shell编程中用户输入处理(shell 04)
shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...
- Shell编程中变量用法
1. 变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除,贪婪匹配 ${变量名%匹配规则 ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- shell编程系列5--数学运算
shell编程系列5--数学运算 方法1 expr $num1 operator $num2 方法2 $(($num1 operator $num2)) expr操作符对照表1 操作符 含义 num1 ...
- Shell编程中while与for的区别及用法详解【转】
在shell编程中经常用到循环,常用的循环有for和while循环两种.while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别. 一.常用 ...
- shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法
shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...
- shell编程中的单/双 小括号, 中括号, 大括号
linux shell中的变量类型?分字符串或者数字或者bool类型吗? 参考: http://www.cnblogs.com/nufangrensheng/p/3477281.html 不分! sh ...
- [ SHELL编程 ] shell编程中数值计算方法实例
SHELL编程中经常会涉及到数值计算,有时候对于这些计算命令使用场景容易忘记或者混淆,这里针对常用的命令做个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表 ...
- SHELL编程概念&变量剖析
一.shell软件概念和应用场景 1) 学习Linux技术,不是为了学习系统安装.命令操作.用户权限.配置IP.网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件.程序(Apa ...
随机推荐
- Spring -- spring结合aop 进行 tx&aspectj事务管理配置方法
1. tx 配置方法, 代码示例 javabean及其映射文件省略,和上篇的一样 CustomerDao.java, dao层接口 public interface CustomerDao { pub ...
- C语言查找算法之顺序查找、二分查找(折半查找)
C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ...
- css tips —— 可见性对图片加载的影响
如果是<img />标签,无论是display: none:还是visibility: hidden;都会加载图片: 但是如果是背景图片即background-image: url(xxx ...
- 在myeclipse中安装svn
首先下载site.zip,然后解压.在myeclipse的安装目录中的dropins文件夹中新建svn文件夹,把site中的features和plugins文件夹复制到svn中即可.然后重启Myecl ...
- netty同时支持socket和http
项目需要使用netty做中转服务器,同时支持两种不同协议的客户端,经过几天查询资料终于找到合适的方案了,同时感谢Netty权威指南及论坛问答,开始贴代码 客户端1==>socket public ...
- Exception has been thrown by the target of an invocation 网站报错
最近因为要做一个启动器,在使用WPF做UI的时候,发现有错误如下: 错误 1 未知的生成错误"此实现不是 Windows 平台 FIPS 验证的加密算法的一部分. 行 8 位置 3.&quo ...
- HDU 4725 建图
http://acm.hdu.edu.cn/showproblem.php?pid=4725 The Shortest Path in Nya Graph Time Limit: 2000/1000 ...
- Kestrel 服务器部署多站点问题 (nginx 反向代理)
Kestrel 作为微软的跨平台 web 服务器,有些地方用的好不是很熟. 作为一款嵌套到 dll 中的进程级 web 服务器,在同一台服务器上部署多站点确实还存在一点问题. 今天采用 nginx 做 ...
- jQ通过cookie记住用户名
总结要点: 一.封装的一个cookie函数: 二.获取input的value值:$("input[name=user]").val() 三.设置input的value值:$(&qu ...
- 【MAF】MAF插件框架简介
引言 Managed Add-In Framework是一个插件式框架.它有两大作用,一个是解耦,插件和宿主由7个管道组成,两边都有适配器Adapter管道,能最大程度地降低插件和宿主的耦合度: ...