条件语句
linux测试
test 测试
测试表达式是否成立(用echo $? 检测是否正确)
语法:test [选项] [文件名]
选项 | 作用 |
---|---|
-e | 测试文件是否存在 |
-r | 查看文件有无读的权限 |
-d | 测试是否为目录 |
-f | 测试是否为文件 |
-w | 测试当前用户有无写的权限 |
-x | 测试是否有执行权限 |
-L | 测试是否为软连接 |
比较整数数值
语法:[整数1 操作符 整数2 ]
常用操作符
-eq: 等于(Equal)
-ne: 不等于(Not Equal)
-gt: 大于(Greater Than)
-lt: 小于(Lesser Than)
-le: 小于或等于(Lesser or Equal)
-ge: 大于或等于(Greater or Equal)
字符串比较
语法:
[ 字符串1 = 字符串2 ]相同
[ 字符串1 != 字符串2 ] 不相同
= :等于
!= :不等于(取反)
-z :字符串内容为空
逻辑测试(短路运算)
短路与:&&
全真才为真,一假即为假
短路或:||
一真即为真,全假才为假
建议&&放在||前面执行
逻辑否: !
取反
格式:cmd1 && cmd2 ||cmd3
[ ] 和 [[ ]]
[ ]
[[ ]] 加强版的单个[ ],可以支持正则表达式和通配符
[ -a ] :且
[ -o ] :或
[[ == ]]:等于号右边通配符
[[ =~ ]]:等于号右边是正则表达式
( )、{ }区别
(CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行
( ):会开启子shell
{ }:不会开启子shell,在当前环境下运行
awk
是一种文本处理工具,它可以用于从文件或标准输入中提取和操作数据。它以行为单位读取输入,并根据指定的规则进行处理
if语句的结构
单分支
语法:
#!/bin/bash if [ 5 -gt 4 ] #如果5大于4 then touch hyh #如果5大于4,则创建hyh文件 fi
双分支
必须if开头,fi结尾
if #判断条件 then #命令语句 else #命令语句(如果第二条不能满足)则执行 fi
多分支(满足条件直接执行命令,如果不满足往下继续判断条件)
if 判断条件1 then #命令序列(需要执行的操作) elif判断条件2 then(需要执行的操作) elif判断条件3 then …………(依次类推,可设置多个条件) fi
实验示例:
case语句架构
case支持通配符
*:任意长度任意字符
<<任意字符:定位符,写完尾部也要加,并且不能加空格
case的语法格式
case 关键字 in 条件判断1) 命令序列1 ;; 条件判断2) 命令序列2) ;; ………… ………… *) 默认命令序列* ;; esac
#!/bin/bsah read -p "请输入你的分数:" num case $num in 100) echo "满昏" ;; 8[0-9]|9[0-9]) echo "不错" ;; [1-9]|[1-7][0-9] echo "还需努力" ;; 0) echo "天才,神中神" ;; *) echo "输入有误,重新输入" bash $0 ;; esac