shell脚本命令的两种工作方式
交互式:用户输入一条命令就立即执行一条。
批处理:由用户事先编写好一个完整的Shell脚本,Shell会一次性执行多行命令。
1.编写简单的脚本
创建一个example.sh的脚本(.sh代表脚本文件)
第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行脚本。
第二行为注释信息,提高可读性。
第三、四就是脚本命令。
第一种执行脚本方式
第二种执行脚本方式
给脚本增加执行权限(chmod u+x命令)
2.接受用户的参数
符号 | 作用 |
---|---|
$0 | 当前Shell脚本程序的名称 |
$# | 总共有几个参数 |
$* | 对应的是所有位置的参数值 |
$? | 显示上一次命令的执行返回值 |
$1、$2、$3… | 对应第N个位置的参数值 |
sh执行shell脚本
3.判断用户的参数
测试语句格式:[ 条件表达式 ] []内左右两边都有一个空格
四种条件测试语句
文件测试语句:指定条件来判断文件是否存在或权限是否满足等情况的运算符
逻辑测试语句:对测试结果进行逻辑分析
整数值比较语句:对数字的操作(大于、<、>、!、>=、<=、=)
字符串比较语句:用来判断字符串是否为空值,或者两个字符串是否相同
文件测试所用的参数
参数 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 测试是否为一般文件 |
-r | 判断当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
(1)文件测试
判断/etc/fstab是否为一个目录类型的文件。(0代表存在,1代表不存在)
(2)逻辑语句测试
&&表示当前的命令执行成功后才执行它后面的命令。
例如:判断/dev/cdrom文件是否存在,存在就输出exist。
||表示当前面的命令执行失败后才执行后面的命令。
例如:结合环境变量USER来判断当前登录的用户是否为非管理员身份。
!表示把条件测试中的结果取反。
(3)整数比较语句
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于等于 |
-ge | 是否大于等于 |
返回1表示否,0表示是。
实际应用:
获取内存量信息的第四列信息。
通过grep命令 匹配Mem关键字,再用awk ‘{print $4}’只打印第四列(动态的),最后赋值给freemMem变量。(等号后面是反引号括起来的,awk括起来的是单引号)
执行freemMem变量
判断内存可用量的值是否小于1024,小于则提示信息“Memory less 1024”
(4)字符串比较语句
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否相同 |
-z | 判断字符串内容是否为空 |
判断String变量是否为空值,进而判断是否定义了这个变量
当前语系的环境变量LANG不是zh_CN时,则会满足逻辑测试条件并输出"Not zh_CN"