网站建设与维护费,网站建设的主要内容,怎样注册一个自己的网站,网站发产品ps怎么做产品图Shell 和其他编程语言一样#xff0c;支持多种运算符#xff0c;包括#xff1a;
算数运算符关系运算符布尔运算符字符串运算符文件测试运算符
原生bash不支持简单的数学运算#xff0c;但是可以通过其他命令来实现#xff0c;例如 awk 和 expr#xff0c;expr 最常用。…Shell 和其他编程语言一样支持多种运算符包括
算数运算符关系运算符布尔运算符字符串运算符文件测试运算符
原生bash不支持简单的数学运算但是可以通过其他命令来实现例如 awk 和 exprexpr 最常用。
expr 是一款表达式计算工具使用它能完成表达式的求值操作。
例如两个数相加(注意使用的是反引号 而不是单引号 )
实例
#!/bin/bashvalexpr 2 2
echo 两数之和为 : $val执行脚本输出结果如下所示
两数之和为 : 4两点注意
表达式和运算符之间要有空格例如 22 是不对的必须写成 2 2这与我们熟悉的大多数编程语言不一样。完整的表达式要被 包含注意这个字符不是常用的单引号在 Esc 键下边。
算术运算符
下表列出了常用的算术运算符假定变量 a 为 10变量 b 为 20
注意条件表达式要放在方括号之间并且要有空格例如: [aaab] 是错误的必须写成 [ $a $b ]。
实例 算术运算符实例如下
#!/bin/basha10
b20valexpr $a $b
echo a b : $valvalexpr $a - $b
echo a - b : $valvalexpr $a \* $b
echo a * b : $valvalexpr $b / $a
echo b / a : $valvalexpr $b % $a
echo b % a : $valif [ $a $b ]
thenecho a 等于 b
fi
if [ $a ! $b ]
thenecho a 不等于 b
fi执行脚本输出结果如下所示
a b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b注意
乘号(*)前边必须加反斜杠()才能实现乘法运算if…then…fi 是条件语句后续将会讲解。在 MAC 中 shell 的 expr 语法是$((表达式))此处表达式中的 “*” 不需要转义符号 “” 。
关系运算符
关系运算符只支持数字不支持字符串除非字符串的值是数字。
下表列出了常用的关系运算符假定变量 a 为 10变量 b 为 20
实例 关系运算符实例如下
#!/bin/bash
a10
b20if [ $a -eq $b ]
thenecho $a -eq $b : a 等于 b
elseecho $a -eq $b: a 不等于 b
fi
if [ $a -ne $b ]
thenecho $a -ne $b: a 不等于 b
elseecho $a -ne $b : a 等于 b
fi
if [ $a -gt $b ]
thenecho $a -gt $b: a 大于 b
elseecho $a -gt $b: a 不大于 b
fi
if [ $a -lt $b ]
thenecho $a -lt $b: a 小于 b
elseecho $a -lt $b: a 不小于 b
fi
if [ $a -ge $b ]
thenecho $a -ge $b: a 大于或等于 b
elseecho $a -ge $b: a 小于 b
fi
if [ $a -le $b ]
thenecho $a -le $b: a 小于或等于 b
elseecho $a -le $b: a 大于 b
fi执行脚本输出结果如下所示
10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b布尔运算符
下表列出了常用的布尔运算符假定变量 a 为 10变量 b 为 20
实例 布尔运算符实例如下
#!/bin/bash
a10
b20if [ $a ! $b ]
thenecho $a ! $b : a 不等于 b
elseecho $a $b: a 等于 b
fi
if [ $a -lt 100 -a $b -gt 15 ]
thenecho $a 小于 100 且 $b 大于 15 : 返回 true
elseecho $a 小于 100 且 $b 大于 15 : 返回 false
fi
if [ $a -lt 100 -o $b -gt 100 ]
thenecho $a 小于 100 或 $b 大于 100 : 返回 true
elseecho $a 小于 100 或 $b 大于 100 : 返回 false
fi
if [ $a -lt 5 -o $b -gt 100 ]
thenecho $a 小于 5 或 $b 大于 100 : 返回 true
elseecho $a 小于 5 或 $b 大于 100 : 返回 false
fi执行脚本输出结果如下所示
10 ! 20 : a 不等于 b
10 小于 100 且 20 大于 15 : 返回 true
10 小于 100 或 20 大于 100 : 返回 true
10 小于 5 或 20 大于 100 : 返回 false逻辑运算符
以下介绍 Shell 的逻辑运算符假定变量 a 为 10变量 b 为 20:
实例 逻辑运算符实例如下
#!/bin/bash
a10
b20if [[ $a -lt 100 $b -gt 100 ]]
thenecho 返回 true
elseecho 返回 false
fiif [[ $a -lt 100 || $b -gt 100 ]]
thenecho 返回 true
elseecho 返回 false
fi执行脚本输出结果如下所示
返回 false
返回 true字符串运算符
下表列出了常用的字符串运算符假定变量 a 为 “abc”变量 b 为 “efg”
实例 字符串运算符实例如下
#!/bin/bashaabc
befgif [ $a $b ]
thenecho $a $b : a 等于 b
elseecho $a $b: a 不等于 b
fi
if [ $a ! $b ]
thenecho $a ! $b : a 不等于 b
elseecho $a ! $b: a 等于 b
fi
if [ -z $a ]
thenecho -z $a : 字符串长度为 0
elseecho -z $a : 字符串长度不为 0
fi
if [ -n $a ]
thenecho -n $a : 字符串长度不为 0
elseecho -n $a : 字符串长度为 0
fi
if [ $a ]
thenecho $a : 字符串不为空
elseecho $a : 字符串为空
fi执行脚本输出结果如下所示
abc efg: a 不等于 b
abc ! efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下
其他检查符
-S: 判断某文件是否 socket。-L: 检测文件是否存在并且是一个符号链接。
实例 变量 file 表示文件 /var/www/runoob/test.sh它的大小为 100 字节具有 rwx 权限。下面的代码将检测该文件的各种属性
#!/bin/bashfile/var/www/runoob/test.sh
if [ -r $file ]
thenecho 文件可读
elseecho 文件不可读
fi
if [ -w $file ]
thenecho 文件可写
elseecho 文件不可写
fi
if [ -x $file ]
thenecho 文件可执行
elseecho 文件不可执行
fi
if [ -f $file ]
thenecho 文件为普通文件
elseecho 文件为特殊文件
fi
if [ -d $file ]
thenecho 文件是个目录
elseecho 文件不是个目录
fi
if [ -s $file ]
thenecho 文件不为空
elseecho 文件为空
fi
if [ -e $file ]
thenecho 文件存在
elseecho 文件不存在
fi执行脚本输出结果如下所示
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在