shell if语句和test命令

在shell中if条件判断语句和我们的C、C++、Java等语言是不同的,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a==b ]),否则报错;另外与if配对的有else if和else,如果我们要写这两个必须后面跟有东西,否则也会报错,在编程中不跟是可以的:

if(a==b)
printf("a=b");
else
{
//什么都没有
}

但是shell中是不可以的,简单的看一下shell里的if、else if和else的简单使用:

#!/bin/bash
a=10
b=20
if [ $a == $b ]#注意[]里外的空格
then #if条件成立后引出后续
echo 'a=b'
elif [ $a -gt $b] #如果使用else if 必须在最后多加一
fi #结束
then echo "a > b" #所有包含if的判断,都需要then引出后续
else#必须有操作,否则只写else报错
echo 'a<b' 
fi #if结束标志,必须有

以上就是简单的条件判断语句举例说明,下面我们来看看shell的test命令说明:Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。下面我们接着对这个三个方面进行举例说明:
1、数字:
这里写图片描述
这里的数值的比较条件分别为:

    -eq  是否相等
    -ne  是否不等
    -gt  是否大于
    -ge  是否大于等于
    -lt  是否小于
    -le  是否小于等于

如果变量名过长取值比较需要加[],如比较val和val1:$[val] -eq $[val1]
2、字符串比较:
这里写图片描述
字符串的比较:

    =  两个字符串是否相等
    != 两个字符转是否不等
    -n  字符串是否为空
    -z  字符串是否不空

字符串变量取值规则和数字一样,变量长的话加[]。
3、文件测试:
这里写图片描述
文件是针对单个文件的:

-e 文件名  如果文件存在则为真
-r 文件名  如果文件存在且可读则为真
-w 文件名  如果文件存在且可写则为真
-x 文件名  如果文件存在且可执行则为真
-s 文件名  如果文件存在且至少有一个字符则为真
-d 文件名  如果文件存在且为目录则为真
-f 文件名  如果文件存在且为普通文件则为真
-c 文件名  如果文件存在且为字符型特殊文件则为真
-b 文件名  如果文件存在且为块特殊文件则为真

具体展示就不在这里展示了,最后我们来看看执行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/magiclyj/article/details/77923274