【shell脚本入门到精通】基本规范及良好的编写习惯
作者:老油条IT记 公众号:老油条IT记
#前言: 良好的书写规范和书写习惯,会让我们减少很多不必要的麻烦,可以提高我们的效率!
1.基本的规范
#1.1.开头指定脚本解释器 #!/bin/bash 或 #!/bin/sh
#1.2.开头加版本版权等信息 #Date: 20:20 202-3-5 #Author:create by oldIT #Mail: 123321@qq.com #Function: This scripts function..... #Version:2.1 #时间、作者、邮件、功能、版本
#1.3.脚本中不用中文注释 尽量用英文注释,防止出现乱码
#1.4.脚本以.sh为扩展名 例如:webstart.sh
#1.5.脚本应该存放在固定的路径下 如:/data/scripts/
#创建shell脚本程序的步骤 #第一步:创建一个包含命令和控制结构的shell文件,以.sh为扩展名
#第二步:修改这个文件权限使它可以执行 修改方式:chmod u+x 文件名
#第三步:执行 方法1:./example 方法2:bash + 文件 方法3:source + 文件
2.良好的书写习惯
#2.1.成对的符号应尽量一次性写出,然后退格在符号里增加内容,防止遗漏 如:{} [] '' ""
#2.2.中括号[]两端至少要有1个空格,输入技巧:先输入一对中括号,然后退一个格,输入两个空格,再退一格,双中括号[[]]也是这样写: [ name ] [[ name ]]
#2.3.对于流程控制语句应该一次性将格式写完,再添加内容 #比如1:写if语句 if 条件内容 then 内容 fi
#比如2:for循环语句 for do 内容 done #提示:while,case和until等语句也是一样
#2.4.通过缩进让代码更易读(tab键) if 条件内容 then 内容 fi
#2.5.字符串赋值给变量应加双引号,并且等号前后不能有空格 如:my_file="test.txt"
#2.6.脚本中的单引号、双引号及反引号,必须为英文状态下的符号 '',‘’ "",“” ``,·· #提示:前面为英文输入法状态下的符号,后者为中文状态下的符号
3.shell脚本变量命名及引用变量规范
#3.1.全局变量命名 概述:全局变量也称环境变量,定义变量应该全部大写,如APACHE_ARE或APACHEARE,名字对应的内容要尽量明白,多个单词之间可以使用"_"号连接,全局变量的定义一般放在系统的全局路径中,采用export来定义 #示例 [root@game ~]# tail -1 /etc/profile export NGINX_ERR="Hello Word" [root@game ~]# source /etc/profile [root@game ~]# echo $NGINX_ERR Hello Word
#3.2.局部变量命名 概述:局部变量也称普通变量,在常规的脚本中,普通变量的命令尽量也进行统一,可以使用驼峰语法,就是第二个单词的首字母大写,如guoKenew,或者每个单词首字母大写,或全部大写或全部小写的方式,选择自己适合的。
在shell函数中的变量可以使用local方式进行定义,使其只在本函数作用域内生效,防止函数中的变量名与外部程序中的变量相同,从而造成程序异常
#示例
[root@game ~]# cat 1.sh
#!/bin/bash
n=5
IT(){
local a
for ((a=0;a<n;a++))
do
echo 'guoke'
done
}
IT
#3.3.变量的引用规范概述:在引用变量的时候,如果变量前后都有字符,则需要使用{DIR},加大括号的方式引用变量,防止出现问题。当变量内容为字符串时,需要使用"
说明:对于需要环境变量的java程序脚本等,在写脚本之前,最好通过export重新声明环境变量,以免在定时任务等场合中出现问题
4.shell函数的命名及函数定义规范
概述:shell函数的命名可以使用单词字母首写的形式,如CreateDir(),可以语义清晰,如可以使用CreateDir()替代CDir(),也可以小写形式createdir()。这有益对函数功能的理解,使函数更加直观清晰。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基础教程 | Tomcat 中使用 Jenkins
- GSoC: GitHub Checks API 项目第三阶段总结
- Sql注入基础_mysql注入
- WEB 安全学习 一、mysql 注入漏洞
- 海洋 CMS 代码审计过程分析
- 观书有感:领域驱动设计的想法
- 微服务架构设计
- PHP 后端表单验证和请求处理
- Go 数据存储篇(四):通过 Gob 包序列化二进制数据
- 引入 SB Admin 2 作为后台管理系统主题
- Laravel Jetstream是什么以及如何入门?
- Bash基础训练指南
- 基于NodeJS从零构建线上自动化打包工作流
- 如何实现H5可视化编辑器的实时预览和真机扫码预览功能
- LeetCode67|二分查找