新老网站做301跳转,seo服务顾问,国内网站空间 优帮云,华为官方商城网站建设方案shell 支持多种运算符1.算数运算符2.关系运算符3.布尔运算符4.字符串运算符5.文件测试运算符原生bash不支持简单的数学运算#xff0c;但是可以通过其他命令来实现#xff0c;例如 awk 和 expr#xff0c;expr 最常用。expr 是一款表达式计算工具#xff0c;使用它能完成表…shell 支持多种运算符1.算数运算符2.关系运算符3.布尔运算符4.字符串运算符5.文件测试运算符原生bash不支持简单的数学运算但是可以通过其他命令来实现例如 awk 和 exprexpr 最常用。expr 是一款表达式计算工具使用它能完成表达式的求值操作。例如两个数相加(注意使用的是反引号 而不是单引号 )#!/bin/bashvalexpr 2 2echo两数之和为 : $val执行脚本输出结果如下所示两数之和为 : 4两点注意1.表达式和运算符之间要有空格例如 22 是不对的必须写成 2 2这与我们熟悉的大多数编程语言不一样。2.完整的表达式要被 包含注意这个字符不是常用的单引号在 Esc 键下边。算数运算符下表列出了常用的算术运算符假定变量 a 为 10变量 b 为 20运算符说明举例加法expr $a $b 结果为 30-减法expr $a - $b 结果为 -10*乘法expr $a * $b 结果为 200/除法expr $b / $a 结果为 2%取余expr $b % $a 结果为 0赋值a$b 将把变量 b 的值赋给 a相等用于比较两个数字相同则返回 true。[ $a $b ] 返回 false!不相等不相等。用于比较两个数字不相同则返回 true。[ $a ! $b ] 返回 true注意条件表达式要放在方括号之间并且要有空格例如: [$a$b] 是错误的必须写成 [ $a $b ]实例#!/bin/basha10b20valexpr $a $bechoa b : $valvalexpr $a -$bechoa - b : $valvalexpr $a *$bechoa * b : $valvalexpr $b /$aechob / a : $valvalexpr $b %$aechob % a : $valif [ $a $b ]thenechoa 等于 bfiif [ $a !$b ]thenechoa 不等于 bfi执行脚本输出结果如下所示a b : 30a- b : -10a* b : 200b/ a : 2b% a : 0a 不等于 b注意• 乘号(*)前边必须加反斜杠()才能实现乘法运算• if...then...fi 是条件语句后续将会讲解。• 在 MAC 中 shell 的 expr 语法是$((表达式))此处表达式中的 * 不需要转义符号 。关系运算符关系运算符只支持数字不支持字符串除非字符串的值是数字。下表列出了常用的关系运算符假定变量 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字符串运算符下表列出了常用的字符串运算符假定变量 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。$检测字符串是否为空不为空返回 true。[ $a ] 返回 true。文件测试运算符文件测试运算符用于检测 Unix 文件的各种属性。属性检测描述如下运算符说明例子-b file检测文件是否是块设备文件如果是则返回 true。[ -b $file ] 返回 false。-c file检测文件是否是字符设备文件如果是则返回 true。[ -c $file ] 返回 false。-d file检测文件是否是目录如果是则返回 true。[ -d $file ] 返回 false。-f file检测文件是否是普通文件(既不是目录也不是设备文件)如果是则返回 true。[ -f $file ] 返回 true。-g file检测文件是否设置了 SGID 位如果是则返回 true。[ -g $file ] 返回 false。-k file检测文件是否设置了粘着位(Sticky Bit)如果是则返回 true。[ -k $file ] 返回 false。-p file检测文件是否是有名管道如果是则返回 true。[ -p $file ] 返回 false。-u file检测文件是否设置了 SUID 位如果是则返回 true.[ -u $file ] 返回 false。-r file检测文件是否可读如果是则返回 true。[ -r $file ] 返回 true。-w file检测文件是否可写如果是则返回 true。[ -w $file ] 返回 true。-x file检测文件是否可执行如果是则返回 true。[ -x $file ] 返回 true。-s file检测文件是否为空(文件大小是否大于0)不为空返回 true。[ -s $file ] 返回 true。-e file检测文件(包括目录)是否存在如果是则返回 true。[ -e $file ] 返回 true。其他检查符-S: 判断某文件是否 socket。-L: 检测文件是否存在并且是一个符号链接。实例变量 file 表示文件 /var/www/runoob/test.sh它的大小为 100 字节具有 rwx 权限。下面的代码将检测该文件的各种属性#!/bin/bashfile/var/www/runoob/test.shif [ -r $file ]thenecho文件可读elseecho文件不可读fiif [ -w $file ]thenecho文件可写elseecho文件不可写fiif [ -x $file ]thenecho文件可执行elseecho文件不可执行fiif [ -f $file ]thenecho文件为普通文件elseecho文件为特殊文件fiif [ -d $file ]thenecho文件是个目录elseecho文件不是个目录fiif [ -s $file ]thenecho文件不为空elseecho文件为空fiif [ -e $file ]thenecho文件存在elseecho文件不存在fi脚本执行结果文件可读文件可写文件可执行文件为普通文件文件不是个目录文件不为空文件存在