linux脚本乘法运算符,Shell脚本⼊门[II.Shell运算符]
Shell 基本运算符
Shell ⽀持的运算符包括
算数运算符
关系运算符
布尔运算符
字符串运算符
⽂件测试运算符
算数运算
原⽣bash不⽀持简单的算数运算,但是可以通过其他命令来实现,例如awk和expr,常⽤的是expr。
expr是⼀款表达式计算⼯具,使⽤它能完成表达式的求值操作。语法为:`expr 表达式`例如:`expr a + b`;在mac中expr的语法是:$(expr 表达式)例如:$(expr a + b)。
使⽤[]执⾏算术。⽐expr更简单的可以使⽤[]执⾏算数运算,使⽤expr做运算时乘法运算*必须加转义符\,才能实现乘法运算;使⽤[]则不需要转义。
#!/bin/bash
# 表达式和运算符之间要有空格,a+b写成:a + b
# 完整的表达式被 ` ` 包含, ` 反引号
var1=`expr 2 + 2` # 计算结果是 4
# 乘号 * 前⾯必须加反斜杠 \ 才能实现乘法运算,其他的运算不需要
var2=`expr 2 \* 2` # 计算结果是 4
# 在Mac中shell的expr语法是:$(expr 表达式)
var3=$(expr 2 + 2) # 计算结果是 4
var4=$(expr 2 \* 2) # 计算结果是 4
# 使⽤ [] 进⾏算数运算,乘法运算符 * 不需要转义
var5=$[2 + 2] # 计算结果是 4
var6=$[2 * 2] # 计算结果是 4
常⽤算数运算符有+、-、*、/、%(取余)、=(赋值),条件表达式运算符有==(相等。⽐较两个数字是否相同)、!=(不相等,⽐较两个数字是否不同),注意:条件表达式要放在⽅括号([])内,并且要有空格,例如:⽐较变量a和b是否相等[ $a == $b ]。
关系运算符
关系运算符只⽀持数字,不⽀持字符串,除⾮字符串的值是数字。
下表列出了常⽤的关系运算符,假定变量 a=10,b=20:
运算符
说明
举例
-eq
检测两个数是否相等,相等返回true
[ $a -eq $b ] 返回false
-ne
检测两个数是否不相等,不相等返回true
[ $a -ne $b ]返回true
-gt
检测左边的数是否⼤于右边的,如果是,则返回true [ $a -gt $b ]返回false
-lt
检测左边的数是否⼩于右边的,如果是,则返回true [ $a -lt $b ]返回true
-ge
检测左边的数是否⼤于等于右边的,如果是,则返回true [ $a -ge $b ]返回false
-
le
检测左边的数是否⼩于等于右边的,如果是,则返回true [ $a -le $b ]返回true
布尔运算符
下表列出了常⽤的布尔运算符,假定a=10,b=20:
运算符
说明
举例
!
⾮运算,表达式为true则返回false,否则返回true
[ !false ] 返回true
-o
或运算,有⼀个表达式为true则返回true
[ $a -lt 20 -o $b -gt 100 ]返回true
-a
与运算,两个表达式都为true才返回true
[ $a -lt 20 -a $b -gt 100 ]返回false
逻辑运算符
Shell的逻辑运算符如下,假定a=10,b=20:
运算符
说明
举例
&&
逻辑的AND
[[ $a -lt 100 && $b -gt 100 ]]返回false
||
逻辑的OR
[[ $a -lt 100 || $b -gt 100 ]]返回true
字符串运算符
Shell的字符串运算度如下,假定a="abc",b="efg"。运算符
说明
举例
=
检测两个字符串是否相等,相等返回true
[ $a = $b ]返回false
!=
检测两个字符串是否相等,不相等返回true
[ $a != $b ]返回true
-z
检测字符串长度是否为0,为0返回true
[ -z $a ]返回false
-n
检测字符串长度是否为0,不为0返回true
[ -n $a ]返回true
str
检测字符串是否为空,不为空返回true
[ $a ]返回true
>
检测左边是否⽐右边⼤,如果是,返回true
[ $a > $b ]返回false
<
检测左边是否⽐右边⼩,如果是,返回true
[ $a < $b ]返回true
⽂件测试运算符
⽂件测试运算符⽤于检测Uinx⽂件的各种属性。
操作符
说明
举例
-b file
检测file是否是块设备⽂件,如果是,则返回true
[ -b $file ]返回false
-c file
检测file是否是字符设备⽂件,如果是,则返回true
[ -c $file ] 返回false
-d file
检测file是否存在并是⽬录,如果是,则返回true
[ -d $file ]返回false
-
f file
检测file是否存在并是普通⽂件(既不是⽬录,也不是设备⽂件),如果是,则返回true [ -f $file ]返回true
-g file
检测file是否设置了SGID位,如果是,则返回true
[ -g $file ]返回false
-k file
检测file是否设置了粘着位(Sticky Bit),如果是,则返回true
[ -k $file ]返回false
-p file
检测file是否是有名管道,如果是,则返回true
[ -p $file ]返回false
-
u file
检测file是否设置了SUID位,如果是,则返回true
[ -u $file ]返回false
-r file
检测file是否存在并可读,如果是,则返回true
[ -r $file ]返回true
-w file
检测file是否可写,如果是,则返回true
[ -w $file ]返回true
-x file
检测file是否可执⾏,如果是,则返回true
[ -x $file ]返回true
-s file
检测file是否存在并⾮空(⽂件⼤⼩是否⼤于0),不为空返回true [ -s $file ]返回true
-e file
检测file(包括⽬录)是否存在,如果是,则返回true
[ -e $file ]返回true
-O file
检查file是否存在并属当前⽤户所有
[ -O $file ]返回true
-G file
检查file是否存在并且默认组与当前⽤户相同
[ -G $file ]返回true
file1 -nt file2
检查file1是否⽐file2新
[ $file1 -nt $file2 ]返回true
file1 -ot file2
检查file1是否⽐file2旧shell最简单脚本
[ $file1 -ot $file2 ]返回false
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论