主要包括以下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)的更多相关文章

  1. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

  2. Shell编程中变量用法

    1. 变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除,贪婪匹配 ${变量名%匹配规则 ...

  3. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  4. shell编程系列5--数学运算

    shell编程系列5--数学运算 方法1 expr $num1 operator $num2 方法2 $(($num1 operator $num2)) expr操作符对照表1 操作符 含义 num1 ...

  5. Shell编程中while与for的区别及用法详解【转】

    在shell编程中经常用到循环,常用的循环有for和while循环两种.while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别. 一.常用 ...

  6. shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法

    shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...

  7. shell编程中的单/双 小括号, 中括号, 大括号

    linux shell中的变量类型?分字符串或者数字或者bool类型吗? 参考: http://www.cnblogs.com/nufangrensheng/p/3477281.html 不分! sh ...

  8. [ SHELL编程 ] shell编程中数值计算方法实例

    SHELL编程中经常会涉及到数值计算,有时候对于这些计算命令使用场景容易忘记或者混淆,这里针对常用的命令做个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表 ...

  9. SHELL编程概念&变量剖析

    一.shell软件概念和应用场景 1) 学习Linux技术,不是为了学习系统安装.命令操作.用户权限.配置IP.网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件.程序(Apa ...

随机推荐

  1. 在NLP中深度学习模型何时需要树形结构?

    在NLP中深度学习模型何时需要树形结构? 前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文<When Are Tree Structures Necessary for ...

  2. tyvj 1091 等差数列 dp

    P1091 等差数列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 广东汕头聿怀初中 Train#3 Problem 3 描述 等差数列的定义是一个数列S, ...

  3. angularjs地址栏传参

    1:路由定义参数 2.controller 3. 4.目标得到参数值

  4. MySQL5.7版本开启二进制日志是log_bin、bin-log 还是 bin_log ?

    已Mac系统为例,文件:/usr/local/mysql/support-files/my-default.cnf 是mysql的默认配置文件,你可以直接修改这个文件但是不推荐,你可以在/etc/my ...

  5. IIS注册.NET

    IIS中ASP.NET的版本号此时可选的有1.1.2.0和4.0三个,如果想让IIS把3个版本都集成上,那NET Framework 3种都要安装,默认安装到的是C 盘. IIS注册方式如下:1.1: ...

  6. input预览上传图片

    html代码 <input type="file" name="file" id="file" > <img src=&q ...

  7. canvas - 圆圈内 hover 高亮 效果

    各种计算还挺繁琐的, 关键点在角度的计算, 根据鼠标位置, 利用atan(y/x) 得到反正切值 , 角度  (tan输入的是r和x围成的那个角,输出的是y/x.反tan就是输入y/x输出角.) &l ...

  8. 纯css实现Magicline Navigation(下划线动画导航菜单)

    看别人网站的时候,看到一种导航菜单的动画,觉得很有意思,就仔细研究起来. 目前见过的动画有三种:水平下划线动画导航.水平背景动画导航.垂直动画导航,他们实现思路都是一样的,都是依赖 css3的同级通用 ...

  9. Redis补充

    Redis补充 (1)redis基本概念 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set ...

  10. 机器学习算法实现解析——libFM之libFM的训练过程概述

    本节主要介绍的是libFM源码分析的第四部分--libFM的训练. FM模型的训练是FM模型的核心的部分. 4.1.libFM中训练过程的实现 在FM模型的训练过程中,libFM源码中共提供了四种训练 ...