概念
Shell 是一个命令行解释器,它为用户提供了一个向操作系统发送指令的接口。Shell 脚本(Shell Script)是一种为 Shell 编写的脚本程序,它包含了一系列的命令和语句,用于实现特定的功能。Shell 脚本通常用于自动化日常任务、批量处理文件、编写简单的应用程序等。
Shell脚本本质上是Shell命令的有序集合。
基本语法
1 |
|
变量
自定义变量
1 | # 定义变量 |
环境变量
shell在开始运行时就已经定义了一些和系统工作环境有关的变量,我们在shell中可以直接使用$name 引用。
可以使用 export 前缀来自定义环境变量,或将已有变量修饰为环境变量。
另外,使用env命令可以查看当前系统所有的环境变量。环境变量使用unset也可以清除。
一般情况下环境变量是全大写字母
1 | # 定义环境变量 |
常见的环境变量
1 | # 当前用户 |
访问和编辑系统变量文件
一般在 ~/.bashrc或者/etc/profile文件中,可以编辑环境变量。
编辑完成后,使用 source ~/.bashrc 或者 source /etc/profile 命令使修改生效。或者重启终端/系统让其自动启用生效。
预设变量
在运行shell脚本时,我们可以通过命令行参数的形式向脚本传递参数,这些参数在脚本中被称为预设变量。预设变量是shell脚本中预先定义好的变量,用于存储命令行参数的值。这样在shell脚本中就可以调用用户在执行脚本时传入的参数。
$0:当前进程的名称
$$:当前进程的进程号
$1 $2 $3 …… $9:运行脚本时传递给其的参数。如果序号不止一位,必须使用花括号将序号连成整体${10}
$#:参数个数
$*:所有参数的内容(拼接字符串)
$@:所有参数组成的数组(变量数组)
$?:命令返回后的状态,0表示成功,非0表示失败
字符串
1 | # 字符串拼接 |
数组
1 | # 定义数组 |
条件判断
1 | # if |
循环
1 | # for |
函数
1 |
|
读取文件
1 | # 读取文件 |
执行脚本的三种方式
- chmod +x test.sh,后 ./test.sh
增加可执行权限后执行 - bash test.sh
直接指定bash解释运行脚本 - . test.sh
.空格 +脚本使用当前shell执行脚本,这种执行方式不会开启子进程,脚本中的变量会直接在当前shell中生效。而且会忽略脚本中指定的shell解释器类型。