第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
第10章 Shell编程(3)_字符处理命令和条件判断的更多相关文章
- 第10章 Shell编程(2)_字符截取命令
2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...
- 第10章 Shell编程(4)_流程控制
5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...
- 第10章 Shell编程(1)_正则表达式
1. 基础的正则表达式 1.1 正则表达式与通配符 (1)正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. (2)通配符用来匹配符合条件的 ...
- 10、shell编程+流程控制+分支嵌套
SHELL 编程 shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...
- linux 10 -Bash Shell编程
二十三. Bash Shell编程: 1. 读取用户变量: read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...
- shell编程:定义简单标准命令集
shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...
- shell编程必须要掌握的命令-xargs
一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...
- shell中括号的特殊用法 linux if多条件判断
一. bash [ ] 单双括号 基本要素: Ø [ ] 两个符号左右都要有空格分隔 Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ] Ø 字符串比较中,&g ...
- (转)shell中括号的特殊用法 linux if多条件判断
一. bash [ ] 单双括号 基本要素: Ø [ ] 两个符号左右都要有空格分隔 Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ] Ø 字符串比较中,&g ...
随机推荐
- 初识 Sql Server存储过程
开篇语 之前的公司并未使用存储过程来做项目,所以小生对存储过程的调用.使用也是一知半解,刚好这家公司就大量用到了存储过程 这次做的功能,为了保持风格一致,也是需要使用存储过程来实现动态sql和数据分页 ...
- spring boot(三):Spring Boot中Redis的使用
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
- 利用fis3自动化处理asp.net项目静态资源时遇到的一个编码问题
fis3是一款强大的前端自动化构建工具,提供了很多非常实用的功能,具体参考http://fis.baidu.com/,使用该工具需要安装node环境. 最近在部署网站的时候尝试了一下使用该工具对前端资 ...
- 关于 ASP.NET MVC 中的视图生成
在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...
- entityframework学习笔记--006-表拆分与实体拆分
1.1 拆分实体到多张表 假设你有如下表,如图6-1.Product表用于存储商品的字符类信息,ProductWebInfo用于存储商品的图片,两张表通过SKU关联.现在你想把两张表的信息整合到一个实 ...
- Scoped CSS规范草案
原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/Scoped-CSS 写在前面 问:什么是Scoped CSS规范? Scoped CSS规范是We ...
- JavaScript中的slice,splice,substr,substring,split的区别
万恶的输入法,在sublime中会显示出繁体字,各位看官见谅. 1.slice()方法:该方法在数组和string对象中都拥有. var a = [1,2,3,4,5,6]; var s = 'thi ...
- Atitit 软件国际化原理与概论
Atitit 软件国际化原理与概论 语言和文化习俗因地域不同而差别很大.对某一特定的地域的 语言环境称为"locale".它不仅包括语言和货币单位,而且还包括 数字标示格式, 日期 ...
- iOS - 静态库的创建与使用
在日常项目开发中,不论是为了两个公司项目上的业务交流还是为了减少项目的编译时间,有的时候我们会把项目中的私密内容打包成静态库,或者是把项目中变动较少一部分打包成静态库以便提高编译效率,那么下面我们就来 ...