shell脚本之运算符

博客介绍了多种运算符,包括算术、布尔、逻辑、字符、关系和文件测试运算符。提到乘法需强转,说明了 [] 与 [[ ]] 在逻辑组合使用符号上的区别,还指出关系运算符对数字和字符串的支持情况,并给出文件测试运算符检测文件属性的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.算术运算符

shelljava说明
‘expr $a - $b’a - b减法
‘expr $a + $b’a + b加法
‘expr $a * $b’a * b乘法
‘expr $a / $b’a / b除法
‘expr $a % $b’a % b取模(取余)
‘expr $a = $b’a = b赋值

tips: '实际上要用` 1左边的那个符号,这里csdn自动会变成md关键字符 所以没办法表示
乘法需要用强转才能使用 比如* a

二.布尔运算符

shelljava说明结果
!!非(取反)!true 的结果是false
====全等2 == 1 的结果是false
!=!=不等2 != 1 的结果是true
-o|ortrue -o false 的结果是true
-a&andtrue -a false 的结果是false

三.逻辑运算符

shelljava说明
||||逻辑的or
&&&&逻辑的and

[] 与[[ ]] 的区别:
[[ ]] 中逻辑组合可以使用 && || 符号
而[] 里面逻辑组合可以用 -a -o
类似三元运算:
[ condition ] && echo 1 || echo 2 :条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句

四.字符运算符

shelljava说明
=equals字符串判断是否相等
!=!equals字符串判断是否不相等
-znone检测字符串长度是否为0,为0返回 true
-nnone检测字符串长度是否为0,不为0返回 true。
str!= null检测字符串是否为空,不为空返回 true。

none表示java没有相关表示

五.关系运算符

shelljava说明
eq==相等
ne!=不相等
-gt>大于
-lt<小于
-ge>=大于等于
-le<=小于等于

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
gt 是 greater than缩写
lt 是 less than 缩写
ge 是 greater than or equals 缩写
le 是 less than or equals 缩写

六、文件测试运算符

操作符说明举例
-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。

变量 file 表示文件"/home/shell/relational_operation.sh",下面的代码,将检测该文件的各种属性:

#!/bin/bash
file="/home/shell/relational_operation.sh"
 
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi
 
[root@whh shell]# chmod a+x File_test_operators.sh 
[root@whh shell]# ./File_test_operators.sh 
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值