Shell脚本
Shell脚本命令的工作方式有两种:交互式和批处理
- 交互式(Interactive):用户每输入一条命令就立即使用并返回结果
- 批处理(Batch):由用户需要先编写Shell脚本,Shell会一次性的执行脚本中所有命令
查看当前用户所使用的SHELL解释器:echo $SHELL
Shell脚本文件一般默认使用 .sh 结尾
#!/bin/bash
#我是一个注释
pwd
ls -al
- 第一行是脚本声明( #! ),告诉系统使用哪种Shell解释器来执行该脚本
- 第二行的注释信息( # ) 是对脚本功能和某些命令的介绍信息
- 第三、四行则是Linux的命令
Linux运行Shell脚本文件有两种方式;第一种方式是通过 bash example.sh 执行该脚本文件,解释器会忽略 脚本声明( #! );第二种是通过 ./example.sh 执行脚本文件,脚本会通过脚本声明( #! )来进行解释执行
脚本内置变量 | 解释 |
---|---|
$0 | 当前Shell脚本程序的名称 |
$# | 参数的总数 |
$* | 所有位置的参数值 |
$? | 上一次命令的执行返回值 |
$N | 对应第N个位置的参数值 |
变量之间用空格间隔
[ 条件表达式 ] 方括号两侧具有一个空格
文件测试语句
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 测试是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
逻辑运算符
运算符 | 作用 |
---|---|
&& | 逻辑 ”与“;条件测试语句的前一个判断结果为true才会执行后面紧挨的命令 |
|| | 逻辑 ”或“;表示前面的命令执行失败才会执行后面的命令 |
! | 逻辑 ”非“;条件测试语句的判断结果取反值 |
整数比较运算符
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-ge | 是否大于或等于 |
-le | 是否小于或等于 |
字符串比较运算符
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
流程控制语句
if
if条件测试语句可以让脚本根据实际情况自动执行相应的命令;if语句分为 单分支结构、双分支结构、多分支结构
if 条件测试语句
then
命令序列
。。。
[elif
命令序列
。。。]
[else
命令序列
。。。]
fi
for
执行前已经确定范围的可以使用for循环
for 变量名 in 取值列表
do
命令序列
。。。
done
while
执行前不确定最终执行的次数
while 条件测试语句
do
命令序列
done
case
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行 星号(*) 中所定义的默认命令
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
.......
*)
默认命令序列
esac
其他
/etc/passwd文件保存的是用户账户等信息
/dev/null 被称为Linux黑洞的文件