shell条件测试

发布于:2025-02-10 ⋅ 阅读:(49) ⋅ 点赞:(0)

为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。条件测试在各种流程控制语句,例如 判断语句和循环语句中发挥了重要的作用,所以,了解和掌握这些条件测试是非常重要的。

1、条件测试的基本语法

在shell程序中,用户可以使用测试语句来测试指定的条件表达式的条件的真或假。当指定的条 件为真时,整个条件测试的返回值为0;反之,如果指定的条件为假,则条件测试语句的返回值为非0 值。

2、文件测试表达式

测试文件的读、写、执行等属性,不光是根据文件属性rwx的标识来判断,还要看当前执行测试的用户是 否真的可以按照对应的权限操作文件。

①test示例:

[root@localhost test3]# ll
 total 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file
 [root@localhost test3]# test -f file;echo $?
 0
 [root@localhost test3]# test -f file1;echo $?
 1
 [root@localhost test3]# test -x file;echo $?
 1

②[]示例(注意测试表达式和方括号两边需要有空格)

[root@localhost test3]# ll
 total 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file
 [root@localhost test3]# [ -f file ];echo $?
 0
 [root@localhost test3]# [ -f file1 ];echo $?
 1
 [root@localhost test3]# [ -w file ];echo $?
 0

③[[]]示例(注意测试表达式和[[]]两边需要有空格)

[root@localhost test3]# ll
 total 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file
 [root@localhost test3]# [[ -f file ]];echo $?
 0
 [root@localhost test3]# [[ -f file1 ]];echo $?
 1
 [root@localhost test3]# [[ -x file ]];echo $?
 1

注意:如果测试的文件路径是用变量来代替,变量一 定要加引号

3、字符串测试表达式

①test示例

[root@localhost test3]# test -n abc;echo $?
 0
 [root@localhost test3]# test -n "";echo $?
 1
 [root@localhost test3]# test -n " ";echo $?
 0
 [root@localhost test3]# test -z '';echo $?
 0
 [root@localhost test3]# test -z abc;echo $?
 1
 [root@localhost test3]# test -z ' ';echo $?
 1
 [root@localhost test3]# test abc = abcd ;echo $?    
1
 [root@localhost test3]# test abc=abcd ;echo $?
 0

②[]示例

[root@localhost test3]# [ -n '' ];echo $?
 1
 [root@localhost test3]# [ -n ' ' ];echo $?
 0
 [root@localhost test3]# [ -z '' ];echo $?
 0
 [root@localhost test3]# [ abc=abcd ];echo $?
 0
 [root@localhost test3]# [ abc = abcd ];echo $?      
1

③[[]]示例

[root@localhost test3]# [[ -n abc ]];echo $?
 0
 [root@localhost test3]# [[ -n ' ' ]];echo $?
 0
 [root@localhost test3]# [[ -n '' ]];echo $?
 1
 [root@localhost test3]# [[ abc=acd ]] ;echo $?
 0
 [root@localhost test3]# [[ abc = acd ]] ;echo $? #注意等号两边需要有空格

注意:测试对象是变量时,变量需要加引号

[root@localhost test3]# test -n $name;echo $?
0
[root@localhost test3]# test -n "$name";echo $?
1
[root@localhost test3]# [ -n $name ];echo $?
0
[root@localhost test3]# [ -n "$name" ];echo $?
 

4、 整数测试表达式

注意: =和!=也可在[]中作比较时使用,在[]中也可使用>和<符号,但需要使用反斜线转义,有时不转译虽然语 法不会报错,但是结果可能会不对;

在[[]]中也可使用包含-gt和-lt的符号,不建议使用;

比较符号两端也要有空格。

5、 逻辑操作符

6、Shell括号用途总结

看到这里,想一想里面所讲的小括号、中括号的用途,是不是有点懵逼了。那我们总结一下!