摘要
笔者在文中分享如何进行 Bash 脚本编程,既是经验的回顾,也希望能够帮助到更多学习编程的朋友。文中提到的一些代码,可能有多种表现形式,笔者选择更符合编码规范的方式进行呈现。如果想要使用其他的开式,可以参考其他的文章。
1 概要
Bash 是Unix Shell的一种,它的名字是一系列缩写:Bourne-AgainSHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again/ born again)。
可以参考 Bash 介绍。
2 Bash 编程
Bash是解释型语言,每次执行的时候,都需要通过解释器解释成机器执行的语言。因此我们需要在脚本文件的第一行指定解释器。
#! /usr/bin/env bash
2.1 变量
Bash中的变量是忽略数据类型的。在定义的时候无需指定数据类型,然后在使用的时候自动转换。
2.1.1 变量定义
varDecimal=100 varString="str" varStringWithBlank="prefix content postfix" varFromVar1="This is number ${varDecimal}" varFromVar2="number${varDecimal}"
执行过程中,varFromVar1的值为"This is number 100",varFromVar2的值为 "number100"。
变量名需要满足这些条件:
- 由字母、数字和下划线组成
- 不能以数字开头
- 区分大小写
- 不能使用Shell的关键字
2.1.2 变量使用
变量使用的时候,需要用到
${}
比如:
echo ${VAR}
2.2 函数
2.2.1 函数定义
函数定义时,可以使用关键字 function 进行修饰,也可以省略。与高级语言不同,函数中参数传递时,不需要进行特别申明,可以直接使用 $n 进行引用。
function printInfo() { ret=1 .... return ret }
2.2.2 函数使用
函数调用的方式如同执行一般的命令一样。采用 函数名 + 参数列表的方式,直接调用。如:
printInfo "User"
3 运行与调试
脚本执行的几种形式:
$ chmod +x tt.sh && ./tt.sh # 为脚本添加执行权限后,直接引用 $ source tt.sh # 使用source命令执行,tt.sh不需要拥有执行权限 $ bash tt.sh # 使用解释器来执行,tt.sh不需要拥有执行权限