当前位置:网站首页>Shell 脚本 快速入门到实战 -02
Shell 脚本 快速入门到实战 -02
2022-07-31 18:47:00 【51CTO】
7 流程控制 (重点)
7.1 case 语句
7.2 case语句
7.3 for 循环
7.4 while循环
8 read 读取控制台输入
9 函数
9.1 系统函数
9.2 自定义函数
10 Shell 工具(重点)
10.1 cut
10.2 sed
10.3 awk
11 企业真实面试题
11.1 京东
11.2 搜狐&和讯网
11.3 新浪
11.4 金和网络
7 流程控制 (重点)
7.1 case 语句
- 基本语法
- 注意:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格
- if后要有空格
- 实例
7.2 case语句
- 基本语法:可以类比java的switch case break deflaut那一套
- 案例
- 输入一个数字,如果是1,则输出banzhang,如果是2,则输出fubanzhang,如果是其他,则输出同学
7.3 for 循环
- 基本语法:可以类比java的for循环,把括号改成do,done
- 案例
- 从1加到100
- 第二种for语法:适用于离散的值
- 案例
打印输入的所有参数
加个“”就不同了
7.4 while循环
- 基本语法
- 实例
- 1+100
8 read 读取控制台输入
- 基本语法
- 实例
- 提示7 秒内,读控制台输入的名称
9 函数
9.1 系统函数
- basename基本语法
- 选项:suffix为后缀,如果suffix被指定了,basename会将pathname去掉suffix
- 功能
- 删除所有的后缀包括最后一个(‘/’)字符,然后将字符串显示出来
- 干嘛用的啊:获取路径或者文件名称之后,可以赋值给到变量,做更多后续操作,实现自动化
- 实例
- dirname 基本语法
功能:从给定的包含绝对路径的文件名中出去文件名(非目录的部分),然后返回剩下的路径(目录的部分)
使用:basename和dirname一起使用
- 实例
9.2 自定义函数
- 基本语法
- 注意点:
- 必须在调用函数地方之前,先声明函数.shell脚本只会逐行运行。
- 函数反馈值,只能通过$?系统变量获得,可以显示加return,如果不加,就以最后一条命令运行结果,作为返回值。
- 实例
- 计算两个输入参数的和
10 Shell 工具(重点)
10.1 cut
- 功能:剪,具体说就是在文件中负责剪数据用的。剪了是为了方便输出
- 基本用法:
- 实例
- 把第一列取出来
- 取一下第2,3列
- 只要一个广(guang)字呢
- 选取系统PATH变量值,第五个":"开始后的所有路径
- 切个ip地址玩玩
eth0的ip的cut过程
10.2 sed
- 功能:sed是一种流编辑器,它一次处理一行内容。当前处理的一行存储在临时缓冲区中,称为“模式空间”,处理好后再推送屏幕。
- 基本语法
- 选项参数说明
-e:直接在命令列模式进行sed的动作编辑
- 命令功能描述
a:新增,后面跟字串,在下一行出现
d:删除
s:查找并替换
- 案例
- 将”believe“这个单词插入到sed.txt第二行下,并打印,但是原来的文件没有变
- 删除sed.txt中所有包含wo的行
- 将sed.txt中的wo替换成ni
- 将sed.txt文件中的第二行删除并将我替换成ni
10.3 awk
正则表达式内容补充: (73条消息) 正则表达式全解析+常用示例_墨遥的博客-CSDN博客_正则表达式行尾
正则表达式测试网站Regex101的使用方法: 正则表达式测试网站Regex101的使用方法 - 知乎 (zhihu.com)
用再去查,不行再学: 【韩顺平讲Java】Java 正则表达式专题 -正则 正则表达式 元字符 限定符 Pattern Matcher 分组 捕获 反向引用等_哔哩哔哩_bilibili
功能:一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片, 切开的部分在进行分析处理
基本语法
pattern:表示AWK在数据中查找的内容,匹配模式,相当于正则匹配
action:在找到匹配内容时所执行的命令
- 选项参数说明
-F:指定输入文件分隔符 F大写
-v:赋值一个用户定义变量 v小写
内置变量
FILENAME:文件名
NR:已读的记录数
NF:浏览记录的域的个数
- 案例
- 搜索passwd文件以root关键字开头的所有行,并输出改行的第7列
- /^正则开头
- 搜索passwd文件以root关键字开头的所有行,并输出改行的第1列和第7列,中间以”,“号分割
- 显示passwd文件的第1列和第7列,以逗号分隔, 且在所有行前面添加列名user,shell在最后一行添加”fenfen,/bin/zuibang“
- 将passwd文件中的用户id增加1并输出
- 内置变量:统计passwd文件名,每行的行号,每行的列数
- 切割ip
eth0版本
- 查询sed .txt中空行所在的行号
- /^$正则:开头结尾没有内容就是空格
10.4 sort
- 功能:sort命令在Linux中非常有用,他将文件进行排序,并将排序结果输出
- 基本语法
- 实例
- 按照第二列数值进行排序
11 企业真实面试题
11.1 京东
- 使用Linux命令查询file1中空行所在的行号
- 有文件chengji.txt内容如下
张三 40
李四 50
王五 60
使用Linux命令计算第二列的和并输出
11.2 搜狐&和讯网
- Shell脚本中如何检查一个文件是否存在?如果不存在改如何处理
11.3 新浪
- 问题:用Shell写一个脚本,对文本无序的一列数字排序并累加求和
11.4 金和网络
- 问题:请用shell脚本写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符”shen“的文件名称
边栏推荐
- TestCafe总结
- MySQL---多表查询
- 性能优化:记一次树的搜索接口优化思路
- 新型电信“套路”,我爸中招了!
- 1161. Maximum Sum of Elements in Layer: Hierarchical Traversal Application Problems
- The new telecom "routine", my dad was tricked!
- Three. Introduction to js
- Automated testing - web automation - first acquaintance with selenium
- MySQL---运算符
- 自动化测试—web自动化—selenium初识
猜你喜欢
A common method and the use of selenium
Golang go-redis cluster模式下不断创建新连接,效率下降问题解决
ResNet的基础:残差块的原理
Automated testing - web automation - first acquaintance with selenium
35道MySQL面试必问题图解,这样也太好理解了吧
【码蹄集新手村600题】不通过字符数组来合并俩个数字
新型电信“套路”,我爸中招了!
华为手机一键开启“维修模式”隐藏所有数据,让手机隐私更加安全
认识异常 (看完这篇你就懂了)
After Effects tutorial, How to adjust overexposed snapshots in After Effects?
随机推荐
认识异常 (看完这篇你就懂了)
【码蹄集新手村600题】不通过字符数组来合并俩个数字
九齐ny3p系列语音芯片替代国产方案KT148A性价比更高420秒长度
Go basic part study notes
华为手机一键开启“维修模式”隐藏所有数据,让手机隐私更加安全
多主复制下处理写冲突(3)-收敛至一致的状态及自定义冲突解决逻辑
MySQL---Subqueries
Golang 小数操作之判断几位小数点与四舍五入
Golang go-redis cluster模式下不断创建新连接,效率下降问题解决
Golang 必知必会Go Mod命令
selenium的常见方法及使用
flyway的快速入门教程
Apache EventMesh distributed event-driven multi-runtime
GAC Honda Safety Experience Camp: "Danger" is the best teacher
useragent在线查找
京东按关键字搜索商品 API
20.支持向量机—数学原理知识
2022 Android interview summary (with interview questions | source code | interview materials)
程序员如何学习开源项目,这篇文章告诉你
Masterless replication system (1) - write DB when node fails