shell 脚本命令工作方式有两种:
1、交互式:每输入一条命令就立即执行
2、批处理:由用户事先编辑好一个完整的 shell 脚本,shell 一次性执行脚本的所有命令
编写简单的shell脚本
实际上在vim编辑器按次序写上Linux脚本,这就是一个简单的脚本了
例如:
注:
1、为避免误以为是普通文件,常加后缀 .sh 来表示这是一个脚本文件
2、第一行的#!是脚本声明,告诉系统使用什么编辑器解释该脚本
3、第二行#代表注释信息
4、往下是我们使用的Linux系统命令
接收用户参数
为了能让shell脚本完成一些实时需求,需要让脚本能接收用户数据
Linux系统已经内设了用于接收参数的变量,变量之间可以使用空格
例如:
$0:当前shell脚本程序名称
$#:总共又几个参数
$*:所有位置参数的值
$?:显示上一次命令的执行返回值
$1 $2 $3…:分别对应着第N个位置的参数值
判断用户参数
shell 脚本中的条件测试语法可以判断表达式是否成立,若成立则返回0,否则返回其他随机值
测试语句格式:[ 条件表达式 ] 注意括号两端有空格
条件测试语句分为四类:
文件测试语句
逻辑测试语句
整数值比较语句
字符串比较语句
文件测试语句
文件测试即判断文件是否存在或权限是否满足等情况的运算符
具体参数:
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 测试是否为一般文件 |
-r | 测试当前用户是否有权限读入 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限&&执行 |
例如:
逻辑测试语句
逻辑语句是对测试结果进行逻辑分析,根据测试结果以实现不同的效果
shell终端中的逻辑“与”(&&):前面的命令执行成功之后才会执行后面的命令
shell终端中的逻辑“或”(||):前面的命令执行失败之后才会执行后面的命令
shell终端中的逻辑“非”(!):把条件测试结果中的判断结果取反值
例如:
结合系统环境变量USRE来判断当前登录用户是否为非管理员身份
切换到一个root管理员身份,判断当前用户是否为一个非管理员用户
判断当前用户是否为一个非管理员用户
整数值比较语句
仅仅只能对数字进行操作,不能对数字、字符串、文件等内容一起操作,而且不能想当然地使用大于号小于号等来判断。因为等号与复制命令符冲突,大于号和小于号分别与输出重定向和输入重定向冲突。
可用的比较运算符如下:
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否等于或大于 |
例如:
其中的数字也可以替换为赋值后的常量
字符串比较语句
用于判断测试字符串是否为空值,或两个字符串是否相同
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
例如: