Shell 脚本基础
Shell脚本一般用 .sh 作为后缀
例如我们编写一个 exmple.sh:
1 | !/bin/bash |
Shell脚本一般会分为三种元素:
第一行是脚本声明,告知系统使用哪种Shell解析器来执行该脚本;
第二行的注视用于描述脚本功能和备注;
第三行开始,才是脚本程序的内容部分。
接收用户参数
使用Shell脚本语句时,需要输入的参数可以直接在脚本命令后输入,以空格分开,例如
1 | ./example.sh arg1 arg2 arg3 ... |
在脚本内部,可以使用美元符号💲+数字来接收参数相关内容,例如:
- $0 可以获取当前脚本的名称
- $# 可以获取当前脚本的参数个数
- $* 可以获取当前脚本的所有参数
- $数字 可以获取当前脚本的某个具体参数(从1开始),例如$1获取脚本输入的第一个参数,而$3获取脚本输入的第三个参数
- $? 是显示最后命令的退出状态,0表示没有错误,其它表示有错误
判断条件
在Shell脚本语句中,条件判断式的写法如下:
1 | if [ 条件测试语句 ] |
注意,测试语句的左右两边各有一个空格。
按照测试的对象来分,测试语句可以分为四种:
- 文件测试语句;
- 逻辑测试语句;
- 整数值比较语句;
- 字符串比较语句;
文件测试
文件测试是指判断文件是否存在、文件的类型和文件的权限等情况,常用的参数如下:
参数 | 作用 |
---|---|
-d | 判断文件是否为目录类型 |
-e | 判断文件是否存在 |
-f | 判断是否为一般文件类型 |
-r | 判断当前用户是否有权读取 |
-w | 判断当前用户是否有权写入 |
-x | 判断当前用户是否有权执行 |
逻辑测试
在逻辑测试语句中,运算符如下:
- “与”运算的符号是 &&
- “或”运算的符号是 ||
- “非”运算的符号是在运算逻辑前加 !
整数值比较
整数值运算只能是对数字进行操作,不能将数字与字符串、文件等进行比较。其运算符如下:
运算符 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
-ge | 大于等于 |
-le | 小于等于 |
字符串比较
用于测试字符串是否为空、判断两字符串是否相同。其运算符如下:
运算符 | 含义 |
---|---|
= | 比较字符串内容是否相同 |
!= | 判断字符串内容是否不相同 |
-z | 判断字符串内容是否为空 |
流程控制语句
if条件语句
结尾必须带 fi。
单分支判断逻辑写法如下:
1 | if 条件判断 |
双分支判断语句写法如下:
1 | if 条件判断 |
多分枝判断语句写法如下:
1 | if 条件判断1 |
for循环语句
结尾必须带 done,写法如下:
1 | for 变量名 in 变量集合 |
while循环语句
结尾必须带done,可以用 exit 语句进行退出,写法如下:
1 | while 条件判断 |
case条件语句
结尾必须带 esac,写法如下:
1 | case 变量值 in |