本帖最后由 二哲科技 于 2021-9-25 16:55 编辑
1.介绍
又来了,这次也是shell脚本练习题分析,这次的练习题还是很简单的,不过大家可能以后也会用到,直接开始吧。
2.代码分析
先说明一下题目【判断/etc/passwd文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.”】,直接贴出代码,代码没有注释,所以每一个语句需要一个一个讲解。#!/bin/bash
#判断文件行数是否大于100行if [ `wc -l /etc/passwd | awk '{print $1}'` -gt 100 ];then echo "/etc/passwd is a big file."else echo "/etc/passwd is a samll file."fi复制代码 可以看到整体逻辑很简单,但是咋一看if后面的判断语句非常麻烦,如果没有接触过shell的人,一定是看不懂的,首先分析最外层的【-gt】这个是大于的意思,就是前面的值是否大于后面的100。然后来分析一下前面特别混乱的语句,语句中【`wc -l /etc/inittab | awk '{print $1}'`】的【``】表示先完成【``】里面的内容,然后将结果输出出来,那么这个结果就是和后面的100进行对比了。然后是【wc -l /etc/passwd】语句,这条语句的意思就是统计这个文件中的行数,输出的结果如下图1所示。可以看到上面的命令已经输出了行数,不过还多输出了一些内容,那么我们就需要将这些多输出的内容去除,则使用【awk '{print $1}】命令,awk可以用于分割数据,这里的【$1】就是以空白符进行分割,所以就把【50】给分割出来了,最终的结果就如下图2所示。结合上面的比较就可以通过判断的行数输出文件的结果了。
图1
图2
3.总结
可以说这次解析代码还是需要一些基础的,主要对一些命令的了解,循序渐进吧!