以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
基本介绍
1、Shell 编程
Shell 编程是指使用 Shell 命令作为程序语言,设计、编写、测试、维护脚本型程序的过程,Shell 命令是 Shell 编程的实现语句和实现方法,Shell 脚本则是 Shell 编程的实现产物。
此外,Shell 编程还会涉及到以下几个方面的内容:
- 对 Shell 环境的理解
- 对变量和函数的使用
- 对条件语句、循环控制语句等复杂逻辑的应用
- 对程序错误的处理和调试技巧
2、Shell 脚本
Shell 脚本可以看作是一种按照既定逻辑顺序执行的 Shell 命令集合,可以包含简单操作命令(如 cd、cp、mv 等操作),也可以包含复杂逻辑区块(如条件语句、循环语句、函数等)。Shell 脚本是一种不需要编译的解释性程序,因此具有快速编写、方便测试的特点,有助于运维工程师简化研发流程、提高工作效率。
Shell 脚本主要用于在类 Unix 系统(如 Linux、macOS 等)中完成以下工作:
- 执行批处理任务:如批量安装软件、生成系统配置等
- 实现自动化过程:如自动处理大量文本内容、自动备份数据等
- 管理操作系统:如监控系统资源、与调度工具(Crontab 等)结合定期执行任务等
虽然 Shell 编程与其他主流编程语言相比而言略显粗陋,但笔者认为编程的核心思想应该是一致的。同时为了避免出现异常问题、便于他人阅读和管理,构建 Shell 脚本时也应当遵循一定的编程规范。
本文总结了 20 余条常用编程规范,并推荐一种 Shell 脚本检查工具,帮助大家养成良好的 Shell 编程习惯。
编程规范
- 建议在 Shell 脚本创建时,以 .sh 作为文件名结尾,方便识别文件类型
- 建议赋予 Shell 脚本适当的执行权限,允许以 ./xxx.sh 的形式运行脚本;若没有赋予执行权限,只能以 /bin/bash xxx.sh 的形式运行脚本,非 root 用户还需要加上 sudo
- 建议在 Shell 脚本的开头处使用 #! 指定命令行解释器(如 #!/bin/bash)
- 建议在 Shell 脚本的结尾处使用 main "$@" 指定程序的入口,增强脚本的结构化程度
- 建议在 Shell 脚本中通过 (cd `dirname 0`;pwd) 获取当前脚本的路径,并以此为基准查找其他路径
- 建议在 Shell 脚本的内容中勤用 # 标明注释,充分解释脚本语句或逻辑区块的用途、注意事项等,方便自己和他人阅读,提升理解效率
- 建议对传入 Shell 脚本的参数进行检查(如判断个数是否符合预设),避免脚本运行异常
- 建议 Shell 变量的名称尽量直观易理解且风格统一,形式可以为驼峰型、下划线分隔单词等
- 建议充分考虑环境变量、局部变量在不同 Shell (父 Shell、子 Shell)下的作用域,确保其在被引用时能够生效
- 建议在 Shell 脚本中引用 Shell 变量时,尽量采用 "
- 建议在 Shell 脚本中将多次出现的常量统一赋值给一个变量,方便在常量发生变化后快速修改,提升脚本的可配置能力
- 建议在 Shell 脚本中养成良好的缩进习惯,使脚本内容具有清晰易读的层级结构,有助于避免将直接执行的命令与函数体搞混
- 建议在 Shell 脚本中为关键命令语句的输出添加回显或将其重定向至日志文件,方便在脚本运行出现异常时进行排查和调试;回显可以通过 echo -e "