shell编程中变量的运算 (shell 06)

Posted 梦想远航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程中变量的运算 (shell 06)相关的知识,希望对你有一定的参考价值。

主要包括以下3中

字符串操作
数学运算
浮点运算

一.字符串操作
字符串的连接
连接字2个字符串不需要任何连接符,挨着写即可

长度获取
  expr length "hello"
  expr length "$str" 变量名必须放在双引号里,否者语法错误
查找字符串中字符的位置
  expr index "$str" CHARS
  第一个是从1 开始的,查找不到返回 0 ,返回匹配到的第一个字符的位置

[[email protected] ~]# echo $str
hello word
[[email protected] ~]# expr index "$str" h
1
[[email protected] ~]# expr index "$str" hel (只匹配h)
1
[[email protected] ~]# expr index "$str" a
0

 

字符串截断
expr substr "$str" POS LENGTH
POS起始位置(包含),LENGTH 长度

[[email protected] ~]# expr substr "$str" 7 4
word

字符串匹配
expr "$str" : REGEXP (冒号前后都得有空格)
expr mathch "$str" REGEXP
必须完整匹配才行

[[email protected] ~]# echo $str
aBcD php2016ajax
[[email protected] ~]# expr "$str" : \([a-z]* [a-z]*\)
aBcD phP

二.数学运算
逻辑运算
数值运算

逻辑运算
&,|,<,>,=,!=,<=,>=
数值运算
+,-,*,/,%

expr expression
result=$[expression]

[[email protected] sh]# echo $num1,$num2,$num3
1,2,1
[[email protected] sh]# expr $num1<$num2
-bash: 2: 没有那个文件或目录

操作符两边 要有空格

[[email protected] sh]# expr $num1\<$num2 
1<2
[[email protected] sh]# expr $num1 \< $num2
1
[[email protected] sh]# expr $num1 = $num3
1
[[email protected] sh]# expr $num1 = $num2
0
expr中用=判断是否等
在[]中==

[[email protected] sh]# res=$[$num1=$num3]
-bash: 1=1: attempted assignment to non-variable (error token is "=1")
[[email protected] sh]# res=$[$num1==$num3]
[[email protected] sh]# echo $res
1

浮点数运算
内建计算器 bc
bc能够识别:
数字(整型和浮点型)
变量
注释 (以 #开始的行 或者/* */)
表达式
编程语句 (如条件判断 :if-then)
函数

bc -q 能忽略版本信息等提示语
scale可设置精度

[[email protected] sh]# bc -q
10/3
3
scale=4
10/3
3.3333
num1=10;num2=3
num1/num2
3.3333
quit


在脚本中使用bc
1.
var=`echo "options;expression" |bc `

[[email protected] sh]# res=`echo "scale=4;10/3" |bc`
[[email protected] sh]# echo $res
3.3333
2.
res=`bc<<E
options
statements
expressions
E
`
[[email protected] sh]# res=`bc <<E
> a=10
> b=3
> scale=4
> c=a/b
> c
> E`
[[email protected] sh]# echo $res
3.3333

 







































以上是关于shell编程中变量的运算 (shell 06)的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程Shell中Bash变量-数值运算运算符变量测试和内容替换

shell编程中两个非整数变量如何做加减乘除运算

Shell编程——运算符

Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制

Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制

shell与shell script