Shell编程、字符处理、条件判断1-21-6

笔记

字符处理
1.排序命令sort(通常不用参数)
[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: 只统计字符数

[root@localhost ~]# wc /etc/passwd
  22   45 1101 /etc/passwd
#默认:行数22  单词数45 字符数1101

条件判断
1.按照文件类型判断

-b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) 
-c文件 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) 

-d 文件 判断该文件是否存在,并且是否为目录文件(是目录为真) 
-e 文件 判断该文件是否存在(存在为真) 
-f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真) 

-L 文件 判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真) 
-p 文件 判断该文件是否存在,并且是否为管道文件(是管道文件为真) 
-s 文件 判断该文件是否存在,并且是否为非空(非空为真) 
-S 文件 判断该文件是否存在,并且是否为套接字文件(是套接字文件为真)
格式:
[root@localhost ~]# test -e /root/insall.log
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e /root/install.log ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /etc ] && echo "yes" || echo "no"
yes
#第一个判断命令如果正确执行,则打印“yes”,否则打印“no”

2.按照文件权限判断

-r 文件 判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真) 
-w文件 判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真) 
-x 文件 判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真) 

-u 文件 判断该文件是否存在,并且是否该文件拥有SUID权限(有SUID权限为真) 
-g 文件 判断该文件是否存在,并且是否该文件拥有SGID权限(有SGID权限为真) 
-k 文件 判断该文件是否存在,并且是否该文件拥有SBit权限(有SBit权限为真)

[root@localhost ~]# [ -w student.txt ] && echo "yes" || echo "no"
yes
#判断文件是拥有写权限的

3.两个文件之间比较

文件1 -nt 文件2   判断文件1的修改时间是否比文件2的新(如果新则为真)

文件1 -ot 文件2   判断文件1的修改时间是否比文件2的旧(如果旧则为真)

文件1 -ef 文件2   判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法

[root@localhost ~]# ln /root/student.txt /tmp/stu.txt
[root@localhost ~]# ll -i student.txt 
33974916 -rw-r--r--. 2 root root 63 5月   8 12:14 student.txt
[root@localhost ~]# ll -i /tmp/stu.txt 
33974916 -rw-r--r--. 2 root root 63 5月   8 12:14 /tmp/stu.txt
[root@localhost ~]# [ /root/student.txt -ef /tmp/stu.txt ] && echo "yes" || echo "no"
yes

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(小于等于为真)

[root@localhost ~]# [ 23 -ge 22 ] && echo "yes" || echo "no"
yes
[root@localhost ~]# [ 23 -le 22 ] && echo "yes" || echo "no"
no

5.字符串判断

-z 字符串   判断字符串是否为空(为空返回真) 

-n 字符串   判断字符串是否为非空(非空返回真) 

字串1 ==字串2    判断字符串1是否和字符串2相等(相等返回真)

字串1 != 字串2    判断字符串1是否和字符串2不相等(不相等返回真)

[root@localhost ~]# name=sc
[root@localhost ~]# [ -z "$name" ] && echo "yes" || echo "no"
no

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# [ "$aa" == "bb" ] && echo "yes" || echo "no"
no

6.多重条件判断

判断1 -a 判断2    逻辑与,判断1和判断2都成立,最终的结果才为真

判断1 -o 判断2     逻辑或,判断1和判断2有一个成立,最终的结果就为真

!判断    逻辑非,使原始的判断式取反

[root@localhost ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"
no
[root@localhost ~]# [ -n "$aa" -a "$aa" -gt 10 ] && echo "yes" || echo "no"
yes
#判断变量aa是否有值,同时判断变量aa的是否大于23,因为变量aa的值不大于23,所以虽然第一个判断值为真,返回的结果也是假
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值