shell脚本编程学习笔记7(XDL)——字符处理命令和条件判断

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SiuKong_Ngau/article/details/79947544

shell编程学习笔记——字符处理命令和条件判断

1,字符处理

[root@localhost ~]# sort [选项] 文件名 
    选项:   -f:  忽略大小写  
            -n:  以数值型进行排序,默认使用字符串型排序  
            -r:  反向排序  
            -t:  指定分隔符,默认是分隔符是制表符  
            -k n[,m]: 按照指定的字段范围排序。从第n字段开始,  m字段结束(默认到行尾)
实例:
    [root@localhost ~]# sort /etc/passwd    # 排序用户信息文件
    [root@localhost ~]# sort -r /etc/passwd # 反向排序


    [root@localhost ~]# sort -t ":" -k 3,3 /etc/passwd 
    # 指定分隔符是“:”,用第三字段开头,第三字段结尾排 序,就是只用第三字段排序
    [root@localhost ~]# sort -n -t ":" -k 3,3 /etc/passwd 


2、统计命令wc 
[root@localhost ~]# wc [选项] 文件名 
    选项:     -l: 只统计行数  
            -w: 只统计单词数  
            -m: 只统计字符数 

2,条件判断

1,文件类型进行判断

-d 文件 判断该文件是否存在,并且是否为目录文件(是目录为真) 
-e 文件 判断该文件是否存在(存在为真) 
-f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真)
实例:
    [root@localhost ~]# test -e /root/install.log 
    [root@localhost ~]# [ -e /root/install.log ]
    [ -d /root ] && echo "yes" || echo "no"  
    # 第一个判断命令如果正确执行,则打印“ yes ”,否则打 印“ no ”

2,文件权限

 -r 文件      判断该文件是否存在,并且是否该文件拥有读权限(有读 权限为真) 
 -w 文件      判断该文件是否存在,并且是否该文件拥有写权限(有写 权限为真) 
 -x 文件      判断该文件是否存在,并且是否该文件拥有执行权限(有 执行权限为真) 
 实例:
    [ -w student.txt ] && echo "yes" || echo "no"

3,文件之间的比较

文件1 -nt 文件2         判断文件1的修改时间是否比文件2的新(如果新则为真) 
文件1 -ot 文件2         判断文件1的修改时间是否比文件2的旧(如果旧则为真) 
文件1 -ef 文件2         判断文件1是否和文件2的Inode号一致,可以理解为两个 文件是否为同一个文件。
                       这个判断用于判断硬链接是很 好的方法

实例:
    ln /root/student.txt /tmp/stu.txt 
    # 创建个硬链接吧


    [ /root/student.txt -ef /tmp/stu.txt ] && echo "yes" || echo "no"                  
    yes 
    # 用 test 测试下,果然很有用

4,整数比较

整数1 -eq 整数 2        判断整数1是否和整数2相等(相等为真) 
整数1 -ne 整数 2        判断整数1是否和整数2不相等(不相等位置) 
整数1 -gt 整数2         判断整数1是否大于整数2(大于为真) 
整数1 -lt 整数2         判断整数1是否小于整数2(小于位置) 
整数1 -ge 整数2         判断整数1是否大于等于整数2(大于等于为真) 
整数1 -le 整数2         判断整数1是否小于等于整数2(小于等于为真) 


实例:
    [ 23 -ge 22 ] && echo "yes" || echo "no"                                   yes 
    # 判断 23 是否大于等于 22 ,当然是了
    [ 23 -le 22 ] && echo "yes" || echo "no"  
    no 
    # 判断 23 是否小于等于 22 ,当然不是了

5,字符串的判断

-z 字符串      判断字符串是否为空(为空返回真) 
-n 字符串      判断字符串是否为非空(非空返回真) 
字串1 ==字串2   判断字符串1是否和字符串2相等(相等返回真) 
字串1 != 字串2  判断字符串1是否和字符串2不相等(不相等返回真)

实例:
    name=sc 
    # 给 name 变量赋值
    [ -z "$name" ] && echo "yes" || echo "no"  
    no 
    # 判断 name 变量是否为空,因为不为空,所 以返回 no

    aa=11 bb=22 
    # 给变量 aa 和变量 bb 赋值
    [ "$aa" == "bb" ] && echo "yes" || echo "no"            no 
    # 判断两个变量的值是否相等,明显不相等 ,所以返回 no

6.多重条件判断

判断1 -a 判断2      逻辑与,判断1和判断2都成立,最终的结果才为真 
判断1 -o 判断2      逻辑或,判断1和判断2有一个成立,最终的结果就为 真 
!判断              逻辑非,使原始的判断式取反  

实例:
    aa=11 [ -n "$aa"  -a "$aa" -gt 23 ] && echo "yes" || echo "no" no 
    # 判断变量 aa 是否有值,同时判断变量 aa 的是否大于 23 
    # 因为变量 aa 的值不大于 23 ,所以虽然第一个判断值为真, 返回的结果也是假

    aa=24 [ -n "$aa"  -a "$aa" -gt 23 ] && echo "yes" || echo "no" 
    yes 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页