test/if判断比较运算

本文详细介绍了Shell脚本中的条件判断和流程控制,包括数学比较运算、文件检查、字符串比较和逻辑运算。讲解了if语句的各种形式,如单if、if-then-else和if-then-elif,并展示了如何使用双括号进行运算以及匹配字符串。此外,还通过实例演示了这些条件判断在实际脚本中的应用。

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

一:shell中的运算

1、数学比较运算【整型】
在shell比较运算中没有< > =,可以用man test查看
运算符解释

-eq

等于

-gt      大于
-lt  小于
-ge大于或等于
-le小于或等于
-ne  不等于
test 1 -eq 1;echo $?  判断1等于1,如果返回0,则说明是正确的

如果要比较浮点型,就放大倍数,然后去掉小数点后面的0,比如1.5和2比较

[root@localhost shell]# test `echo "1.5*10"|bc|cut -d '.' -f1` -gt $((2*10));echo $?
1

【cut -d '.' -f1  代表以.为分隔符,打印第一个字段】

2、文件比较与检查

-d检查文件是否存在且为目录 
-f检查文件是否存在且为文件
-e检查文件是否存在【可以判断文件或者目录】
-r 检查文件是否存在且可读【注意如果是root超级用户,即使赋予000权限,echo $?依旧返回0】
-s检查文件是否存在且不为空
-w检查文件是否存在且可写
-x检查文件是否存在且可执行
-O检查文件是否存在并且被当前用户拥有【注意是大写O】
-G检查文件是否存在并且默认组为当前用户组
file1 -nt file2检查file1是否比file2新
file1 -ot file2检查file1是否比file2旧

3、字符串比较运算

【注意字符串要用引号】

==等于
!=   不等于
-n      检查字符串的长度是否大于0 
-z(zero)  检查字符串的长度是否为0         test -n "";echo $?

4、逻辑运算
与或非   &&    ||     !

5、赋值运算
= 赋值运算符


二:if语法

1、单if语句

语句格式:

if [ condition ]            #condition值为ture  or false
        then 
             commands
fi

 例:【vi test2.sh】

if [ ! -d /tem/abc ]
       then 
             mkdir -v /tem/abc                #-v表示显示创建过程
             echo "123"
             echo "create /tem/abc ok"
fi
[root@localhost shell]# bash test2.sh
mkdir: created directory ‘/tmp/abc’
123
create /tmp/abc ok

2、if-then-else语句
语句格式

if [ condition ]
         then 
               commands1
else
               commands2
fi

例 :【vi test3.sh】

if [ $USER == 'root' ]
   then
       echo "管理员,你好"
else
       echo "guest,你好"
fi
[root@localhost shell]# bash test3.sh
管理员,你好

 3、if-then-elif语句

语句格式(略)

vi test4.sh

if [ $1 -gt $2 ]
   then
        echo "$1 > $2"                 #$1,$2就是从命令行传参的意思
elif [ $1 -eq $2 ] 
   then
        echo "$1 = $2"
else 
        echo "$1 < $2"
fi
[root@localhost shell]# bash test4.sh 8 9
8 < 9
[root@localhost shell]# bash test4.sh 10 6
10 > 6

4.嵌套

vi test5.sh

if [ $1 -eq $2 ]
   then 
        echo "$1 = $2"                 #$1,$2就是从命令行传参的意思
else
    if [ $1 -gt $2 ]
        then
              echo "$1 > $2"
    else
              echo "$1 < $2"
    fi
fi
[root@localhost shell]# bash test5.sh 4 5
4 < 5
[root@localhost shell]# bash test5.sh 7 6
7 > 6

三:if高级运用

 (1)使用双括号进行运算

if (( 100%3+1>1 ));then
   echo "yes"
else
   echo "no"
fi                                   #执行结果为yes

(2)匹配字符串

for i in r1 r2 r3 r4              #把r1,r2,r3,r4赋给i
do 
    if [[ $i = r* ]];then         #匹配以r开头的元素
            echo $i
    fi
done                              #执行结果为r1 r2 r3 r4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值