Shell 脚本编程(二) —— 条件判断 (test命令) + 多路分支语句(if 、case)

test 命令可以用于判断文件类型以及值的比较,test 判断条件为真,返回 0;条件为假,返回 1。


        目录

一、条件判断

(1) 整数判断

(2) 字符串判断

(3) 文件判断

二、if 语句

1、语法结构

2、实际运用

三、case语句


一、条件判断

(1) 整数判断

整数判断用到的运算符如下:

运算符含义
-eq等于(equal)
-gt大于(greater than)
-lt小于(less than)
-ge大于等于(greater equal)
-le小于等于(less equal)
-ne不等于(not equal)
# 如果一行有多个命令,命令行通过 ‘;’ 来判断一个命令是否结束
# $? 表示上一条命令的执行结果命令行使用 ; 来分隔不同的命令

# test 1 -eq 1 的执行结果为真,返回 0,因此 $? 拿到的值就是 0
[gzx@VM-16-2-centos ~]$ test 1 -eq 1;echo $?        
0
[gzx@VM-16-2-centos ~]$ test 1 -eq -1;echo $?
1
[gzx@VM-16-2-centos ~]$ test 1 -gt -1;echo $?
0

(2) 字符串判断

字符串判断用到的运算符如下:

运算符含义
==等于
!=不等于
-n检查字符串长度是否大于0
-z检查字符串长度是否等于0
#注意:字符串和运算符之间必须要有空格隔开
[gzx@VM-16-2-centos ~]$ test $USER == 'root';echo $?
0
[gzx@VM-16-2-centos ~]$ test $USER == 'roat';echo $?
1

(3) 文件判断

test命令除了可以做值的比较外,还可以检测文件类型

选项含义
-d name    测试name 是否为一个目录
-e name    测试一个文件是否存在
-f name测试name 是否为普通文件
-L name    测试name 是否为符号链接
-r name    测试name 文件是否存在且为可读
-w name    测试name 文件是否存在且为可写
-x name    测试name 文件是否存在且为可执行
-s name    测试name 文件是否存在且其长度不为0
f1 -nt f2  测试文件f1 是否比文件f2 更新
f1 -ot f2  测试文件f1 是否比文件f2 更旧
[gzx@VM-16-2-centos ~]$ test -f file.txt;echo $?
0
[gzx@VM-16-2-centos ~]$ test -d file.txt ;echo $?
1

二、if 语句

1、语法结构

if 表达式1; then
    执行语句1;
    执行语句2;
else  
    执行语句3
fi

2、实际运用

可以使用方括号代替 test 命令,但是首尾至少要有一个空格

# 命令行输入
[gzx@VM-16-2-centos ~]$ ./variable.sh file.txt


################# 写法一 #################
# variable.sh
if test -d $1;then
    echo "File $1 exists"; 
else
    echo "File $1 not exists";  
fi
################# 写法二 #################
if [ -d $1 ];then 
    echo "File $1 exists"; 
else
    echo "File $1 not exists";
fi

三、case语句

case 字符串变量 in
    模式1)
            执行语句1
            ;;
    模式2)
            执行语句2
            ;;            #双分号结束(类似于C的break)
    *)                    # * 表示其他模式(类似于C的default)
            执行语句3
            ;;    
esac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值