目录
1.条件语句
1.1 test 测试文件的表达式 是否成立
格式1:test条件表达式
格式2:[ 条件表达式 ]
注意[ ] 空格,否则会失败
测试 是否成功使用 $? 返回值
[操作符 文件或目录]
操作符
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-a | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-L | 测试是否为软连接文件 |
-x | 测试当前用户是否有权限执行(eXcute) |
其中test -a 如果!(取反)会出bug 所以我们通常使用 test -e
在linux 使用判断
test
[ ] 不支持通配符 正则表达式
[[ ]] 加强版的 单个[] 可以支持正则表达式 和通配符(字符)
1.2比较整数数值
[ 整数1 -操作符 整数2 ] 公式
-
-eq:第一个数等于(Equal)第二个数
-
-ne:第一个数不等于(Not Equal)第二个数
-
-gt:第一个数大于(Greater Than)第二个数
-
-lt:第一个数小于(Lesser Than)第二个数
-
-le:第一个数小于或等于(Lesser or Equal)第二个数
-
-ge:第一个数大于或等于(Greater or Equal)第二个数
实例
1.3字符串比较
常用的测试操作符
- =:字符串内容相同
- !=:字符串内容不同,!号表示相反的意思(取反)
- -z:字符串内容为空
- -n:字符是否存在
1.4 逻辑测试
格式1 [ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2 命令1 操作符 命令 2 ...
常用的测试操作符
- -a 或&&:逻辑与,“而且”的意思
- -o或||:逻辑或,"或者"的意思
- !:逻辑否
短路与 全真才为真 cmd1 && cmd2 都为真才为真 一假即为假
短路或 一真即为真 cmd1 || cmd2 全假即为假
ping 小脚本
-c 发送包的个数
-i 发送的间隔时间
-W 超时时间
-w 多少秒后停止ping操作
1.5 双中括号
[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
注意: 此表达式用于[[ ]]中;扩展的正则表达式
2.if 语句的结构
2.1 分支结构
单分支
if #判断条件;
then #条件为真的分支代码
fi
双分支
if #判断条件; then #条件为真的分支代码
else #条件为假的分支代码
fi
多分支
if #判断条件1
then
#条件1为真的分支代码elif #判断条件2
then
#条件2为真的分支代码elif #判断条件3;then
#条件3为真的分支代码...
else#以上条件都为假的分支代码 托底
fi
单分支 例子(判断主机连通性)
双分支 (判断是否为超级管理员)
多分支(考试成绩)
3. case 语句结构
case 多分支结构
格式
格式:
case 变量名称 in
“第一个变量内容”
程序段
;;
“第二个变量内容”
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
注意case 支持glob风格的通配符:
* 任意长度任意字符
?任意单个字符
[0-9] 指定范围内的任意单个字符
丨 或者, 如:a|b