您的位置:首页 > 运维架构 > Shell

Shell基本运算符

2017-12-08 23:15 260 查看
# Shell基本运算符

# Shell支持多种运算符:

# 算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符

# 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常见。

# expr是一款表达式计算工具,使用它能完成表达式的求值操作。

val=`expr 2 + 2`

echo "两数之和为:$val"

# 输出结果:

#   两数之和为:4

# 注意:1、表达式和运算符之间要有空格;2、完整的表达式要被``(反引号)包含,注意这个字符是单引号。

# 算术运算符

# 下面是常用的算术运算符,
假定变量a为10,b为20

# 1、+  --
加号    -- `expr $a + $b` 结果为30

# 2、-  --
减号    -- `expr $a - $b` 结果为 - 10

# 3、*  --
乘法    --  `expr $a \* $b` 结果为200

# 4、/  --
除法    -- `expr $b / $a` 结果为2

# 5、%  --
取余    -- `expr $b % $a` 结果为0.

# 6、=  --
赋值   -- a=$b
将变量b的结果给a

# 7、== --
相等。用于比较两个数字,返回true或false  
[$a == $b]
返回false

# 8、!=  --
不相等。用于比较两个数字,     
[$a != $b]
返回true

#  注意:条件表达式要放在方括号之间,并且要有空格

a=10

b=20

echo "a+b =" ` expr $b + $a`

echo "b-a= " `expr $b - $a`

echo "a*b= " `expr $b \* $a`

echo "b/a= " `expr $b / $a`

echo "b%a= " `expr $b % $a`

a=$b

if [ $a == $b
]

then

echo "a等于b"

fi

if [ $a != $b
]

then

echo "a不等于b"

fi

#  执行结果:

# a+b = 30

# b-a=  10

# a*b=  200

# b/a=  2

# b%a=  0

# a等于b

# 注意:1、乘号(*)前面必须加反斜杠(\)才能实现乘法运算

# 2、if ... than .. fi


# 3、在MAC中Shell的expr语法是:
$((表达式
)),此处*不需要转义符号\

# 关系运算符,
关系运算符只支持数字,除非字符串的值是数字

#1、 -eq
检测两个数是否相等     
[$a -eq $b]

#2、 -ne
检测两个数是否不相等  
[$a -ne $b]

#3、 -gt
大于                
[$a -gt $b]

#4、 -lt
小于

#5、 -ge
大于等于  

#6、 -le
小于等于

#布尔运算符

# ! 非运算  
[!false]

# -o 或运算
[ $a -lt 20 -o $b -gt 100
]

# -a 与运算  

#逻辑运算符

# && 逻辑AND 
[[$b -eq 20 && $b -eq 10]]

# || 逻辑OR
[[$a -eq 10 || $b -eq 20]]

#字符串运算符

#1、 =
检测两个字符是否相等  
[$a = $b]

#2、!=
检测是否不相等

#3、 -z
检测字符串长度是否为0 
[-z $a]

#4、-n
检测字符串长度是否不为0 
[-n $b]

#5、str
检测是否为空      [$a]

#文件操作符

# 1、 -b file
检测文件是否是块设备文件   
[-b $file]

#2、 -c file
检测文件师傅是字符设备文件 
[-c $file]

#3、 -d file
检测文件是否是目录     
[-d $file]

# 4、 -f file
检测文件是否是普通文件(既不是目录,也不是设备文件) 

#5、 -g file
检测文件是否设置了SGID位 

#6、 -k file
检测文件是否设置了粘着位 

#7、 -p file
检测文件是否有管道

#8、 -u file
检测文件是否设置了SUID位

#9、 -r file
检测文件是否可读

#10、 -w file
检测文件是否可写

#11、-x file
检测文件是否可执行

#12、-s file
检测文件是否为空(文件大小为0)

#13、-e file
检测文件是否存在
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell