shell编程(六)语言编码规范之(变量)

一    shell的学习路线

学习'shell的精髓':

   1)'实质'其实就是一堆'命令的集合'而已,'文本处理,数据采集'

   2)初学者从简单的shell脚本学起('先研究格式语法')

   3) 再研究'编程思想'在里面('语言的编程规范')

   4)脚本的'整体性能'-->'时间指标metrics'

   5)脚本安全的规范('数据安全')和'脚本开发的规范(纳入版本控制)'

二    shell的变量

(1)变量的组成

变量 = '变量名' +  '变量值'

变量名:变量名必须以'数字或下划线开头(begin)',后面可以跟'字母、数字、下划线',区分大小写'变量名大小写敏感'

变量值:变量值的来源'关注点-->信息源'

(2)变量的含义

变量名('标示符')的命名要清晰、明了,有明确的含义('见名知意'),最好使用'完整的单词'或'通俗易懂的缩写',避免产生歧义

(3)变量的命名规范

这里给出一种'参考规范':

    1)'驼峰'命名风格'单词的首字母大写'

    2) 多个单词以'_'进行组成

备注:'命名风格'应自始至终'保持一致',不可来回变化

###########比较科学的###########

GLOBAl_VARIABLE='globalvalue'   -->'环境变量使用大写'

local_variable='localvalue'     -->'局部变量使用小写'

function_name()                 -->'函数命名也使用小写'
{

}

注意:'禁止(forbidden)'-->'脚本的环境变量'和'系统公共环境变量'重名'rename'

(4)变量的类型

自定义变量:由用户自己定义、修改和使用

特殊变量:'环境变量'、'只读变量'、'位置变量'、'预定义变量'

变量作用域:'全局'变量、'局部'变量、'交互'定义变量

环境变量:

    1)'全局'配置文件 -->  /etc/profile*  /etc/bashrc

    2)'用户'配置文件 --> ~/.bashrc      ~/.bash_profile

****************分割线('局部变量')****************

概念: 使用 'local' 声明特定功能的变量

声明和赋值应该在'不同行'

优点: 使用 local 来声明局部变量以确保其只在'函数内部和子函数中'可见,这避免了'污染(侵入性)'全局命名空间和'不经意间'设置可能具有函数之外重要性的变量

'强调':当赋值的值由命令替换提供时,'声明和赋值必须分开',因为内建的 local '不会从命令替换中'传递退出码

****************分割线('local的细节')****************

注意:当赋值的值'由命令替换提供时',声明和赋值'必须分开',因为内建的 local '不会'从命令替换中'传递'退出码

local的细节

(5)变量的声明

声明: 变量名在左,变量值在右,=是'赋值符号',不是等于

variable_name="value"

规范: 变量赋值时'='两边'不能有空格'

使用: 在变量名之前'加$',最好'(这里规定必须)'是用"{}"包括变量

echo ${variable_name}

(6)变量要初始化

明确:由于shell是'弱文本类型',变量'虽然不需要'事先声明,但是如果不初始,可能在'脚本运行的过程中报错'

    ${var:=初始值} '采纳'

    ${var:-初始值}

########################对比########################

    ${var:-初始值} 只是'临时调用','变量var并不改变',仍然为空

    ${var:=初始值} 调用初始值后,变量'var也赋予了一个值'

补充:声明和赋值'可以分开',只要在'使用前初始化'即可

 

变量未初始化导致的错误

rm -fr ${chroot}/

分析:如果${chroot}未初始化'为空',可能导致文件系统的根'/'被'删除'

(7)变量来源

三    使用变量的一些细节

(1)对变量值进行判断未使用"${variable}"

'判断场景':避免'变量值有空格'导致出现异常

报错 

(2)只读变量:某些核心变量的变量值在数值传递的过程中,不能被改变 ‘常量

报错

declare只读补充

说明

(1)  只读变量之后,'不能修改'该变量的属性,也'不能删除'该变量,所以在声明变量的时候,'应该慎用',避免'有去无回'

(2)  另外在命令行中敲readonly,你会发现有'很多只读变量',当然这些变量也是不能够被'修改或删除'的

(3)local局部变量的特性

提示

三    其他规范

规则1: '禁止'使用'数字或较奇怪的字符'来定义标示符

规则2:  用正确的'反义词组'命名具有'互斥意义'的变量或'相反动作(action)'的函数

规则3:  '文件名'不要使用'大小写混排'方式

规则4:  对于'非循环'变量命名,'禁止'取单个字符'(eg:i、j、k)'毫无意义的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值