字符串操作
 
变量赋值:
说明:变量值可以用单引号、双引号、或者不加任何引号来赋值给变量
变量名="变量值"
变量名='变量值'
变量名=变量值
例如:str="hello world"
注意:=左右不能有空格,否则会报错command not found
区别:
1.单引号的不能使用变量,$会被认为是个普通字符;字符串间可以有空格
2.双引号可以使用变量;字符串间可以有空格
3.不加任何引号的只能赋值连续的字符串,中间不能有空格,否则会报命令错误
 
字符串连接
直接将两个字符串写在一起就可以,可以使用变量可以使用单双引号。不能用空格或任何分隔符分开
例如:将str变量值连接一个空格然后再连接meitian
str=$str' '"meitian"
 
注意:如果字符串后连接的第一个字符是,:等标点符号或特殊字符(空格和字母,下划线之外的),可以直接连接不需要单双引号。例如str=$str:metiian
 
字符串长度
expr length "$str"
注意:如果是想返回变量的长度,不能使用单引号
如果想将结果赋值到变量c中,可以使用反单引号来实现c=`expr length "$str"`
 
查找字符串位置
expr index $str chars(expr index 原字符串 要查找的字符串)
例如: expr index $str a
 
注意:
1.字符串的索引位置是从1开始的,区别于其他语言的开始位置0
2.如果有多个字符要进行匹配,会返回索引号最小的值(和要匹配的第一个字符没关系)
 
 
字符串截断
expr substr $str POS LENGTH(expr substr 原字符串 要截断的起始位置 要截断的长度)
例如:expr substr $str 2 3
 
字符串匹配
expr “$str” : REGEXP (expr 原字符串 : 正则表达式)
expr match “$str” REGEXP(expr match 原字符串 正则表达式)
例如:expr "$str" : ".*\([0-9]\{6\}\).*"或expr match "$str" ".*\([0-9]\{6\}\).*"
 
注意:
1.有变量的元字符串必须加双引号"$str"
2.使用expr “$str” : REGEXP匹配时,冒号左右必须有空格
3.正则表达式必须用引号括起来
4.如果正则不加()就捕获不到要匹配的值,只会返回匹配到的字符个数
5.expr中的正则表达式需要对(){}等字符使用\进行转义
 
数学运算
运算符:
逻辑运算符 数值运算符
& 与 +
| 或 -
< 小于 *
> 大于 /
<= 小于等于 %
>= 大于等于 ()
= 等于  
!= 不等于  
 
数学运算公式:
expr expression
result=$[ expression ]
 
例如计算(1+2)*5用下面两种方法:
expr \( 1 \+ 2 \) \* 5
result=$[(1+2)*5] 
 
例如对变量a和变量进行大小比较,两种方法如下:
expr $num1 \< $num2
result=$[$num1<$num2]
 
判断两个值是否相等,两种方法如下:
expr $num1 = $num2
result=$[$num1==$num2]
 
做除法运算,查看结果,只取整了:
[root@bjdhj-118-117 ~]# echo $[10/4]
 
说明:
1.使用expr必须对运算符<使用\进行转义,且数值与运算符中间需要空出空格
2.使用$[]做运算不需要对运算符进行转义
3.expr判断是否相同用=,在中括号[]中进行判断需要用两个等号==
4.shell中使用/做除法默认只会保留整数位
5.布尔值的结果,比如比较大小或是否相等。1为true,0为false
 
内建计算器bc(bash calculator)
bc能够识别:
数字(整形和浮点型)
变量
注释(#或/**/)
表达式
编程语句(如条件判断:if then)
函数
 
usage: bc [options] [file ...]
  -h  --help         print this usage and exit
  -i  --interactive  force interactive mode
  -l  --mathlib      use the predefined math routines
  -q  --quiet        don't print initial banner
  -s  --standard     non-standard bc constructs are errors
  -w  --warn         warn about non-standard bc constructs
  -v  --version      print version information and exit
 
1.可以直接在shell中输入bc进入bc工具,然后进行计算
2.bc工具中,scale决定了浮点数的小数位数,默认是0。quit退出bc
3.在脚本中使用bc
     3.1使用管道符 var=`echo "options;expression" |bc`
     例如计算(10/3)*3,保留4位小数
     var=`echo "scale=4;b=10/3;b*3" |bc`
      
     3.2使用内联的输入重定向
     var=`bc<<EOF
     opstions
     statements
     expressions
     EOF
     `
     例如计算(5+5)/3*4,保留4位小数
     result=`bc<<EOF
     a=5
     b=5
     scale=4
     (a+b)/3*4 
     EOF
     `
     
 
说明:
1.bc能够使用外层定义的变量
2.每次使用bc时scale都需要重新定义,scale不会记录到下次使用bc

shell中的字符串操作和数学运算的更多相关文章

  1. shell中的字符串操作

    SHELL字符串操作 bash Shell提供了多种字符串处理的命令: awk命令 expr命令 字符串长度 ${#..} expr length awk的length(s) 实例: string=& ...

  2. shell中的字符串操作——字符串的切割

    default.yaml {default_baseurl: 'http://10.113.10.68:8082'} test.sh a=`cat default.yaml` t=":&qu ...

  3. linux shell学习(字符串操作)--01

    http://blog.csdn.net/shuanghujushi/article/details/51298672 在bash shell的使用过程中,经常会遇到一些字符串string的操作,下面 ...

  4. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  5. shell中截取字符串的方法总结

    shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  6. SQL点滴33—SQL中的字符串操作

    原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...

  7. Python中的字符串操作总结(Python3.6.1版本)

    Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...

  8. Oracle中有关字符串操作的语法

    Oracle中有关字符串操作的语法 Oracle提供了丰富的字符串函数 lpad()函数 lpad()函数用于左补全字符串.在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad ...

  9. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况

    一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...

随机推荐

  1. git一键提交修改文件

    git一键提交修改文件 首先安装git, 有git bash: 新建一个gitcmt文件,放置于与你的项目同级的目录里: 使用:打开git bash, 方法1. git pull\git status ...

  2. UML类图中的各种箭头代表的含义(转自:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html)

    1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...

  3. python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 nu ...

  4. PyalgoTrade 打印收盘价(二)

    让我们从一个简单的策略开始,就是在打印收盘价格的过程中: from pyalgotrade import strategy from pyalgotrade.barfeed import yahoof ...

  5. [UOJ388]【UNR #3】配对树

    uoj description 给你一棵\(n\)个节点的树以及一个长为\(m\)的序列,序列每个位置上的值\(\in[1,n]\),你需要求出把序列中所有长度为偶数的区间内所有数拿出来在树上以最小代 ...

  6. 如何检测MySQL中建立的索引是否生效

    使用方法,在select语句前加上explain就可以了: EXPLAIN SELECT surname,first_name form a,b WHERE a.id=b.id EXPLAIN列的解释 ...

  7. LG5024 保卫王国

    题意 题目描述 Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要 ...

  8. 设计模式(Python)-策略模式

    本系列文章是希望将软件项目中最常见的设计模式用通俗易懂的语言来讲解清楚,并通过Python来实现,每个设计模式都是围绕如下三个问题: 为什么?即为什么要使用这个设计模式,在使用这个模式之前存在什么样的 ...

  9. 949. Largest Time for Given Digits

    Given an array of 4 digits, return the largest 24 hour time that can be made. The smallest 24 hour t ...

  10. centos下memcached安装

    memcached是一款高速.分布式的内存缓存系统.其官方主页在http://www.danga.com/memcached/ 1.安装前的准备 要安装memcached,需要有libevent的支持 ...