shell脚本 (script): 是一种Linux操作命令 , 用户运行脚本时就会自动执行文件中的命令
shell大致可分为两类 :
1. 入门级脚本 : 脚本文件中仅包含一些操作命令 , 无任何逻辑判断语句 , 这种脚本只会按照从上到下的顺序来执行命令 , 如果某行命令错误会自动跳过 , 去执行下一条命令
2. 高级脚本 : 在入门级脚本的基础上在加入条件判断 if , 循环(for , while , until)等逻辑控制语句 , 让脚本更具有通用性和可移植性
编写shell脚本的思路:
1. 根据目标需求分析需要用到哪些操作命令
2. 将操作的命令写入到shell脚本文件中 , 不考虑逻辑判断
3. 运行和测试入门级脚本
4. 对入门级脚本进行优化 , 即添加条件判断if, 循环等逻辑控制语句
5. 运行和测试入门级脚本优化后的高级脚本
test条件判断:
功能 : 用来判断文件 , 权限 , 值(数值是否相等 , 是否为空) .
帮助手册 : 在Linux系统中可通过 man test 来查看
格式:
test 条件 语句
例1 : 判断字符长度是否为零
test -z $x (-z 意为 -zero , 表示$x的字符长度为零时 , 判断则为正确)
例2 : 如图命令行所示;
(echo $? 显示的是上一条命令的执行状态码 , 0 表示正确 , 1 表示错误 )
先判断变量y字符长度是否为0 , echo $? 显示状态码为0 , 表示判断结果为正确 ; 再赋给y一个值 , 显然test -z $y 判断结果为错误 ,所以echo $? 输出的状态码为 1
test 判断语句功能选项介绍
一 . 判断字符长度是否为零 :
test -z $y (上述例子以解释)
test -n $y -n (no zero) : 判断当前变量y字符长度不为0时 , 结果为正确
二 . 判断字符串内容是否相等 :
test a=b 判断 a 和 b 值是否相等 , 相等则为正确
test a != b 判断 a 和 b 值是否相等 , 不相等则为正确 , ! 表示取反
例 : 判断内容相不相等:
三 . 判断整数值的大小 :
格式: test 值1 [选项] 值2
选项有: -eq 相等
-ne 不想等
-gt 大于
-lt 小于
-ge 大于等于
-lt 小于等于
例 : 判断 5 和 4 值的大小:
四 . 判断文件类型:
格式 : [ -d /etc ] 判断/etc 是否为目录 , /etc 为目录则为真 ( [ ] 两头一定要空格)
Linux系统文件类型分为 : 普通文件 , 文件目录 , 块设备 , 字符设备 , 软链接文件 , 套接字 , 管道文件
上述文件类型对应的选项为: -f -d -b -c -L -S -p
例 :判断 /etc 是否为目录
例2: 判断/etc/a.txt 文件是否存在 , 存在则显示"a.txt exists" ,否则就创建/etc/a.txt
[ -f /etc/a.txt ] && echo "a.txt exists" || touch /etc/a.txt
五 . 判断当前文件是否为可读(read) , 可写{write} , 可执行(exec) 权限:
格式 : [ -r 文件名 ] [ -w 文件名 ] [ -x 文件名 ]
例 : 创建文件a.txt , 判断a.txt 权限是否为能可执行
六 . 逻辑的 与 或 非
格式: [ ! abc = abcd ]
[ adc = abc -a 123 =123 ] 条件全部为真时则为真
[ abc = abcd -o 123 =123 ] 有一个为真时则为真