第10章 Shell编程(3)_字符处理命令和条件判断

时间:2023-02-08 13:05:39

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

第10章 Shell编程(3)_字符处理命令和条件判断的更多相关文章

  1. 第10章 Shell编程(2)_字符截取命令

    2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...

  2. 第10章 Shell编程(4)_流程控制

    5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...

  3. 第10章 Shell编程(1)_正则表达式

    1. 基础的正则表达式 1.1 正则表达式与通配符 (1)正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. (2)通配符用来匹配符合条件的 ...

  4. 10、shell编程+流程控制+分支嵌套

    SHELL 编程     shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell)     shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...

  5. linux 10 -Bash Shell编程

    二十三. Bash Shell编程:     1.  读取用户变量:     read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...

  6. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  7. shell编程必须要掌握的命令-xargs

    一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...

  8. shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  9. (转)shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

随机推荐

  1. 多线程相关------互斥量Mutex

    互斥量(Mutex) 互斥量是一个可以处于两态之一的变量:解锁和加锁.只有拥有互斥对象的线程才具有访问资源的权限.并且互斥量可以用于不同进程中的线程的互斥访问. 相关函数: CreateMutex用于 ...

  2. C# 根据自定义线程定时器 生成随机订单

    这个源之于一个朋友问我的一个问题,他说他们的需求是在一天之内随机抽取数据生成订单,还不能让客户看出来. 随机生成的订单还分概率抽取不一定的状态值,那么根据我之前写的定时器线程执行器,我们设计需要一个定 ...

  3. Java接入图灵机器人,实现与机器人聊天

    很多人都玩过微信,其中就有与机器人聊天的功能:

  4. linux ssh scp 命令

    ssh jackielee@192.168.1.103 scp jackielee@192.168.1.103:/home/jackielee/develop/helloworld helloworl ...

  5. Qemu文档

    http://wiki.qemu.org/Manual http://qemu.weilnetz.de/qemu-doc.html http://www.linuxcertif.com/man/1/q ...

  6. VisualVM 性能分析概述

    VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...

  7. 我的开发框架(WinForm)

    近来,看园子里,好多同学,展示自己工作中的开发框架,有的功能强大,有的短小精悍,我也来凑个热闹,望各位大侠指点一二. 一.指导思想 1.尽量减少程序员对数据库的依赖,或者说尽力少的写sql 语句.根据 ...

  8. 超简单的localStorage实现记住密码的功能

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...

  9. P1896 [SCOI2005]互不侵犯 状压dp

    正解:状压dp 解题报告: 看到是四川省选的时候我心里慌得一批TT然后看到难度之后放下心来觉得大概没有那么难 事实证明我还是too young too simple了QAQ难到爆炸TT我本来还想刚一道 ...

  10. 二维码解析:使用 JavaScript 库reqrcode.js解析二维码

    上次使用QRCode.js可以来生成二维码,但是我没有找到有文档说明可以对存在的二维码进行扫描解析其中的内容. 幸亏查找到了可行的解决方案,而且很好使哦!就是reqrcode.js 地址:https: ...