带你领会真正的shell编程

关于linux的shell编程,由于网上缺乏系统的学习资料,部分教程也不够全面,有些博客只介绍了部分shell命令。根据我个人编写shell脚本的经验,对shell编程做个总结,带领大家深入地认识一些shell编程。

首先,看一下这个:

上面这段shell代码摘自我很久之前写过的一个项目,不过也是因为该脚本的需求简单,所以只是单纯的几条命令。在我看来,简单命令的堆积还算不上是真正的shell编程。真正的shell编程在我看来,应该是:本需要通过重量级的语言编写的程序,可以通过shell脚本快速的构建出来。且内部存在一些稍微复杂的流程逻辑,判断逻辑等。不过我的主张还是:使问题简单化,哪种解决方案简单用哪种。对于有些善于利用命令行工具的人,或者所谓的系统管理员,还是比较适合使用shell脚本来解决问题的!

shell编程核心内容:

基础级别(★)

1. 必不可少的命令行工具,busybox工具包,系统buildin命令,binutil工具包等,不求全都会用,但至少对几个使用频率高的命令要十分清楚。

2. 曾经的王者工具,awk,sed这两个处理文本的命令要会使用,awk对于数据的格式化很有帮助,sed用来替换各种形式的文本内容。

shell编程核心(★★★)

3. 各种条件判断,最主要的是字符串的判断,因为命令输出一般都是字符串,所以拿到命令的字符串再做各种判断很重要,频率也很高。判断的原始命令是test,但是一般都用[ ]中括号简写。除了字符串,必要的时候还有数字的判断,文件或路径的判断等。这些在菜鸟教程上都有很详细的说明,必要时做参考。甩个链接:https://www.runoob.com/linux/linux-shell-test.html

4. 流程控制块,if...then...else...fi,for do ... done,while do ... done,case ... in );;esac等,break/continue跟高级语言一样使用。以上用的最多,其他until之类的可以作为辅助使用。

5. 字符串的截取等,如${str:-2}之类,一般要清楚以下几个操作:截取子串(下标截取,倒序截取),正则匹配(搜索子串,替换子串)。一般使用[ ], expr命令,不懂的可以了解一下命令各自的功能。

6. shell参数提取,包括脚本参数的提取,内部函数模块的参数提取。使用:

$0脚本或函数模块的名称,另外,可以使用basename $0取出$0里面的路径。

$1,$2 ... 代表各个参数。

$@不加双引号的所有参数。

$*加双引号的所有参数。

$?上条命令的执行结果0成功其他数字表示失败。

7. 使用getopt,set,eval,shift等命令来辅助解析命令行参数。命令行参数,其对于脚本或命令的重要性是不言而喻的。getopt用于解析并格式化参数字符串,set将参数提取到$1,$2,$3...,eval解决参数中的空格和双引号问题,shift用于吞噬掉最前面(左)的参数,将后面的参数前移,方便你一步步提取参数。一般使用一个while循环段解析各个命令行参数。写个实例供大家了解下,因为这几个命令的解释还挺复杂的,可以使用man了解下或者网上搜索下:

总之,就是把用户传入的一堆参数,提取到自己设置的变量里面,方便下面通过变量访问。

先介绍这么多,今天有点头晕,主要是想跟大家分享一下shell编程的精髓,后续在修改一下这篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值