6 Shell脚本的条件测试与比较

发布于:2024-05-09 ⋅ 阅读:(22) ⋅ 点赞:(0)

已知:$?执行命令后 返回0 表示真 返回1 表示假 
                        6.1.1条件测试  常用的语法
     条件表达式语法               说明
1 test <测试表示式>   test命令与后面表达式最少一个空格   等同于2
2    [ <测试表示式> ]  []边界与内容左右2边最少一个空格          推荐使用
3 [[ <测试表示式> ]]    [[]]边界与内容左右2边最少一个空格 扩展的test命令
4 ((<测试表示式>))       (())2端不需要有空格 常用于计算

注意事项
在双中括号[[]]中可以使用通配符 && || > < 不能用于[]中    
[]可以使用-a -o -gt -lt 
对于整数的关系运算 也可以使用shell的算术运算符(())

                    6.1.2 test条件测试的简单语法及示例 
语法: test -参数 <条件表达式>
-f 普通文件
-z 测试字符串为零 表达式成立 非零 不成立 

    test -f file && echo true || echo false 
test的-f参数用于测试文件是否为普通文件 test命令若执行成功(假) 则执行&&后面的命令
而||后面的命令式test执行失败(假)的后执行的命令
解析:如果test文件存在 则输出true  不存在输出false

也可以只用上面一半逻辑(仅有一个&&或||)
test -f /tmp/oldboy.txt && echo 1 #若表达式成功 则输出1   
test -f /tmp/oldboy.txt || echo o   #若表达式不成功 则输出0

补充:&&和||的两端可以有空格 也可以没空格 

                           6.1.3 []中括号条件测试语法及示例 
语法: [<条件表达式>]

示例 [ -f /tmp/old.boy.txt ] && echo 1 || echo 0 
-f 前后至少有一个空格 ]前后至少有一个空格  echo 后至少有一个空格
                              
                          6.1.4[[]]条件测试语法及示例        
   语法:[[ <条件表达式> ]]
   注意:双中括号的两端也要有空格
   [[ -f /tmp/old.boy.txt ]] && echo 1 || echo 0

   完整的 [] [[]]的用法可通过 man bash获取 

                         6.2 文件测试表达式 
6.2.1 文件测试表达式的用法
常用的文件测试操作符     全拼                 说明(真则测试表达式成立)
-d 文件              directory           文件存在且为目录则为真
-f 文件                 file             文件存在且为普通文件则为真
-e 文件                exist             文件存在则为真
-r文件                  read             文件存在且可读则为真 
-s文件                  size             文件存在且文件大小不为0则为真
-w文件                 write             文件存在且可写则为真
-L文件                  link             文件存在且为链接文件则为真
-x文件                                   文件存在且可执行则为真
fl -nt f2            newer than      文件f1比文件f2新则为真 按文件修改时间来计算
f1 -ot f2            older thant     文件f1比文件f2老则为真 按文件修改时间来计算

[root@localhost /]# [ -w oldboy ] && echo 1 || echo 0
1
[root@localhost /]# ll | grep oldboy
-rw-r--r--    1 root root     0 5月   8 01:16 oldboy

提示 测试文件的读写执行等属性 不光是根据文件属性rwx的表示来判断 还有看当前执行的测试用户是否真的可以按照对应的权限操作该文件 


网站公告

今日签到

点亮在社区的每一天
去签到