shell编程之三(退出状态与比较测试结构)

shell的退出状态

echo $?
    0   表示运行成功
    1~125   表示运行失败
    126 表示找到了该命令,但是无法运行
    127 表示未找到该命令
    >128    表示该命令被系统强制结束

测试结构(有多种,用来判断表达式的)
1:test 表达式
2:[ 表达式 ]
3:if,case,while语句联用,作为流程控制语句的判断条件

整数比较运算符

(不可用于字符串和其他运算比较)

    [ num1 -eq num2 ]   #如果num1等于num2,测试结果为0
    [ num1 -ge num2 ]   #如果num1大于或等于num2,测试结果为0
    [ num1 -gt num2 ]   #如果num1大于num2,测试结果为0
    [ num1 -le num2 ]   #如果num1小于或等于num2,测试结果为0
    [ num1 -lt num2 ]   #如果num1小于num2,测试结果为0
    [ "$num1" -ne num2 ]    #如果$num1变量的值不等于num2,测试结果为0($num1的值必须是整数)

字符串运算符

(用于测试,字符串是否为空,两个字符串是否相等或则不等)

    test string     #测试字符串string是否不为空,不为空,测试结果为0
    [ -n string ]       #测试字符串string是否不为空,不为空,测试结果为0
    [ -z string ]       #测试字符串string是否为空,为空,测试结果为0
    [ string1 = string2 ]   #测试字符串string1是否与string2相同,相同,测试结果为0
    [ string1 != string2 ]  #测试字符串string1是否与string2不相同,不相同,测试结果为0
    [ "$string1" != string2 ]   #测试变量string1的值是否与字符串string2不相同,不相同,测试结果为0

文件操作符

(这里的file可以是文件名,路径名,目录名)

    [ -d file ]     #测试file是否为目录,是目录,测试结果为0
    [ -e file ]     #测试file是否存在,若存在,测试结果为0
    [ -f file ]     #测试file是否为普通文件,若是,测试结果为0
    [ -r file ]     #测试file是否是进程可读文件,若是,测试结果为0
    [ -s file ]     #测试file的长度是否不为0,若是,测试结果为0
    [ -w file ]     #测试file是否为进程可写文件,若是,测试结果为0
    [ -x file ]     #测试file是否为进程可执行文件,若是,测试结果为0
    [ -L file ]     #测试file是否符号化链接,若是,测试结果为0

逻辑运算符

(用于测试多个条件是否为真或为假,或使用逻辑非测试单个表达式)

    [ ! expression ]    #逻辑非,如果expression表达式为假,那么测试结果为真0
    [ expression1 -a expression2 ]  #逻辑与,若两个表达式同时为真,那么测试结果为真0
    [ expression1 -o expression2 ]  #逻辑或,若两个表达式中有一个是真,那么测试结果为真0
    [ ! -e /etc ]       #使用逻辑非,测试/etc目录不存在,(当然结果为假)
    [ 15 -eq 20 -a -d /etc ]    #使用逻辑与,测试两个表达式15 -eq 20 与-d /etc (当然结果为假)
微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/11/20作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???