zoukankan      html  css  js  c++  java
  • 第10章 Shell编程(3)_字符处理命令和条件判断

    3. 字符处理命令

    3.1 排序命令:sort

    (1)sort命令#sort [选项] 文件名

      选项

    作用

    -f

    忽略大小写

    -n

    以数值型进行排序,默认使用字符串型排序

    -r

    反向排序

    -t

    指定分隔符,默认的分隔符是制表符

    -k n[,m]

    按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾)

    (2)应用举例

      ①排序用户信息文件:#sort /etc/passwd

      ②反向排序:#sort –r /etc/passwd

      ③按用户ID升序排序passwd文件:#sort -t ":" -n -k 3 /etc/passwd

    3.2 统计命令:wc

    (1)wc命令:# wc [选项] 文件名,其选项如下

      ①-l:只统计行数

      ②-w:只统计单词数

      ③-m:只统计字符数

    (2)应用举例

      ①#wc /etc/passwd  //统计文件的行数、单词数和字符数

      ②#df –h | wc     //统计命令输出结果的行数、单词数和字符数

    4. 条件判断

    (1)几种判断

      ①按照文件类型进行判断

    测试选项

    作用

    -b 文件

    判断文件是否存在,并且是否为块设备文件(是块设备文件为真)

    -c 文件

    判断文件是否存在,并且是否为字符设备文件(是字符设备文件为真)

    -d 文件

    判断文件是否存在,并且是否为目录文件(是目录为真)

    -e 文件

    判断文件是否存在(存在为真)

    -f 文件

    判断文件是否存在,并且是否为普通文件(是普通文件为真)

    -L 文件

    判断文件是否存在,并且是否为符号链接文件(是符号链接文件为真)

    -p 文件

    判断文件是否存在,并且是否为管道文件(是管道文件为真)

    -s 文件

    判断文件是否存在,并且是否为非空(非空为真)

    -S 文件

    判断文件是否存在,并且是否为套接字文件(是套接字文件为真)

      ②按照文件权限进行判断

    测试选项

    作用

    -r 文件

    判断文件是否存在,并且是否该文件拥有读权限(但区别是所有者、所属组或其他人是谁拥有读权限,只要某一类拥有读权限,就返回真)

    -w 文件

    判断文件是否存在,并且是否该文件拥有写权限

    -x 文件

    判断文件是否存在,并且是否该文件拥有执行权限

    -u 文件

    判断文件是否存在,并且是否该文件拥有SUID权限

    -g 文件

    判断文件是否存在,并且是否该文件拥有SGID权限

    -k 文件

    判断文件是否存在,并且是否该文件拥有SBIT权限

      ③两个文件之间进行比较

    测试选项

    作用

    文件1 -nt 文件2

    判断文件1的修改时间是否比文件2的新,新则为真。

    文件1 -ot 文件2

    判断文件1的修改时间是否比文件2的旧,旧则为真。

    文件1 -ef 文件2

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

      ④两个整数之间比较

    测试选项

    作用

    整数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

      ⑤字符串的判断

    测试选项

    作用

    -z 字符串

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

    -n 字符串

    判断字符串是否为非空

    字符串1==字符串2

    判断两个字符串是否相等(也可以用单等于号,但会与赋值号混淆,不提倡!)

    字符串1!=字符串2

    判断两个字符串是否不相等。

      ⑥多重条件判断

    测试选项

    作用

    判断1 -a 判断2

    逻辑与,判断1和判断2都成立,结果才为真

    判断1 -o 判断2

    逻辑或,判断1和判断2有一个成立,结果为真

    ! 判断

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

    (2)两种判断格式

      ①#test –e /root/install.log

      ②#[ -e /root/install.log ]  //注意,[]旁有空格。脚本中经常应用该格式

    (3)应用举例

      ①判断字符串是否为空:

        # name=abc

        # [ -z "$name" ] && echo yes || echo no

      ②判断字符串是否相等

        # aa=abc

        # bb=abc

        # [ "$aa" == "$bb" ] && echo yes || echo no  //判断aa与bb变量是否相等。

        # [ "$aa" == abc ] && echo yes || echo no  //判断aa变量的值是否等于abc

      ③判断变量是否有值,并且是否大于23

        #aa=50

        #[ -n "$aa" -a $aa -gt 23 ] && echo yes || echo no

  • 相关阅读:
    Perl字符集就是方括号(或称中括号)里一连串可能的字符,只匹配单一字符,该单一字符可以是字符集里的任何一个,“-”在字符集里有特殊含义:表示某个范围的字符。而字符集意外的连字符不具有特殊意义。
    为什么 [00-177]匹配任意7bit ascii码 ?
    用字符串对列表赋值,一个字符串对应一个列表元素,eg: my @escaped = "asteriskasterisk hash access unpack_func";
    正则-量词,匹配的个数
    TCP/IP网络编程 读书笔记1
    LeetCode75 Sort Colors
    LeetCode74 Search a 2D Matrix
    LeetCode73 Set Matrix Zeroes
    LeetCode Weekly Contest 6
    LeetCode72 Edit Distance
  • 原文地址:https://www.cnblogs.com/5iedu/p/6243533.html
Copyright © 2011-2022 走看看