• shell中的字符串操作和数学运算


    字符串操作
     
    变量赋值:
    说明:变量值可以用单引号、双引号、或者不加任何引号来赋值给变量
    变量名="变量值"
    变量名='变量值'
    变量名=变量值
    例如: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]
    2
     
    说明:
    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
  • 相关阅读:
    删除git上已经提交的文件
    spark安装
    Ganglia+nagios 监控hadoop资源与报警
    自定义标签库开发与el表达式
    JavaBean与MVC
    Jsp-查漏补缺
    HttpSession
    Cookie
    HttpServleRequest
    Servlet学习-查漏补缺
  • 原文地址:https://www.cnblogs.com/meitian/p/5316994.html
Copyright © 2020-2023  润新知