shell脚本第一行总是以 #/bin/bash开始,这段脚本通知shell使用系统上的Bourne shell解释器。
任何脚本都可能有注释,加注释需要此行的第一个字符为 #,解释器对此行不予解释。
• 对文件、字符串和数字使用test命令。
• 对数字和字符串使用expr命令。
expr命令测试和执行数值输出。使用最后退出状态命令
1.test测试文件状态
test一般有两种格式,即:
test condition 文件名
或
[ condition 文件名 ]
使用方括号时,要注意在条件两边加上空格。
测试文件状态的条件表达式很多,但是最常用的可在下表中查到:
参数 | 含义 | 参数 | 含义 |
---|---|---|---|
-d | 目录 | -s | 文件长度大于0,非空 |
-f | 正规文件 | -w | 可写 |
-L | 链接文件 | -u | 文件有suid位设置 |
-r | 可读 | -x | 可执行 |
首先我们创建一个空文件test1
[root@localhost test]# touch test1
[root@localhost test]# ll
总用量 0
-rw-r--r--. 1 root root 0 9月 19 14:35 test1
[root@localhost test]#
我们现在测试下该文件的状态:
是否可读
第一种方式:
[root@localhost test]# test -r test1
[root@localhost test]# echo $?
0
第二种方式:
[root@localhost test]# [ -r test1 ]
[root@localhost test]# echo $?
0
两种状态均返回0!
是否可执行?
[root@localhost test]# [ -x test1 ]
[root@localhost test]# echo $?
1
给文件赋予可写的权限,并测试文件是否可执行?
[root@localhost test]# chmod u+x test1
[root@localhost test]# test -x test1
[root@localhost test]# echo $?
0
2.测试时使用逻辑操作符
测试文件状态是否为 O K,但是有时要比较两个文件状态。 s h e l l提供三种逻辑操作完成此
功能。
逻辑操作符 | 逻辑操作符具体的含义 |
---|---|
-a | 逻辑与,操作符两边均为真,结果为真,否则为假。 |
-o | 逻辑或,操作符两边一边为真,结果为真,否则为假。 |
! | 逻辑否,条件为假,结果为真。 |
下面比较两个文件:
[root@localhost test]# ll #列出两个文件详细信息
总用量 0
-rwxr--r--