主要包括以下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. IDEA 修改JSP和后端数据后,页面刷新可以实时更新

    情况:刚开始使用IDEA进行开发时,发现修改JSP页面或者后端数据后,再刷新浏览器页面,发现没有变化,页面无更新. 这样就导致不得不频繁重启tomcat服务器.非常麻烦 解决方法: 步骤1. 先设置t ...

  2. hibernate的多对多配置

    Teacher.java package com.xiaostudy.domain; import java.util.HashSet; import java.util.Set; /** * Tea ...

  3. eclipse格式化代码快捷键失效解决的一个基本方法

    eclipse格式化代码的快捷键Ctrl+Shift+F,是比较常用的一个快捷键之一. 但是用到时却发现按了也没有反应,百度了说是跟搜狗输入法的快捷键冲突了. 搜狗输入法的快捷键Ctrl+Shift+ ...

  4. Android QRCodeReaderView 和Camera API冲突

    开发一款小功能,核心功能是二维码扫描,然后发送到远端服务器.App结构分为两个Activity,Activity A 负责二维码扫描,然后将参数存到本地,再启动Activity B,在Activity ...

  5. 从reduce函数说起...

    reduce函数:  方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值, 最终返回的要看函数内部return的内容. 1. 累加器: var ar ...

  6. Hibernate与JDBC、EJB、JDO的比较

    常用的数据库操作包括:JDBC.EJB.JDO以及Hibernate.它的各有优缺点: (1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高.但这种 ...

  7. gitlab 卸载

    gitlab 卸载 清理命令 sudo gitlab-ctl uninstall sudo gitlab-ctl cleanse sudo gitlab-ctl remove-accounts 停止g ...

  8. C++ 函数后面的const

    一个函数 AcGePoint3dstartPoint() const; const放在后面跟前面有区别么 ==> 准确的说const是修饰this指向的对象的 譬如,我们定义了 classA{ ...

  9. 阻止a标签跳转四种方法 兼容各大浏览器(包括IE)

    阻止a标签跳转四种方法 兼容各大浏览器(包括IE) HTML <!--第一种--> <a href="javascript:;">我不会被跳转</a& ...

  10. centOS7.4 thinkPHP nginx 支持pathinfo和rewrite

    server { listen 80; server_name www.demo.com mayifanx.com; root /data/www/demo; index index.php inde ...