条件判断语句:
格式:[ 判断内容 ]
注意:内容和[ ]之间有空格 (0为thue ,非0为false)
常见的条件判断:
字符串比较:
- = != < >
- -n 长度是否不为0
- -z 长度是否为0
注意使用 < 和 > 必须在前面加一个转义符
整数的比较:
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
权限的判断:
- -r 读
- -w 写
- -x 执行
- -s 为空
文件类型的判断:
- -f 文件存在且是一个常规文件
- -e 文件存在
- -d 文件存在并且是一个目录
if-then 语句
单分支语句:
格式一:
格式二:
注意: if中的判定是通过该命令的退出状态码决定(0 运行then 非0 不运行then)
多分支语句:
结构一:
结构二:
text 命令 用来测试的一系列参数和值
- text 默认为 false
- text 字符串 测试是否有内容
复合条件测试
[ condition1 ] && [ condition2 ] [ condition1 ] || [ condition2 ]
双括号 可以中使用高级数学表达式
((
expression
))
双方括号 拥有双括号的功能,新加了 模式匹配
在模式匹配中,可以定义一个正则表达式(有些shell不支持双方括号)
后面章节会了解
case 流程控制
格式:
for循环
注意:当列表值中存在单引号时,结果会发生错误
解决方法:
使用转义字符(反斜线)来将单引号转义 使用双引号来定义用到单引号的值
IFS 内部字段分隔符(用于获取文件内容)
bash shell 会把下面三个当作字段分割符:
- 空格
- 制表符
- 换行符
修改 IFS: IFS=$' 符号 ' 使之只识别 ' '内的符号(可以同时设置多个符号)
格式二:(与C语言for相似)
while循环
until工作方式与while相反
退出状态码不为0 才会执行内容
break 退出循环
break n 可以选择跳出的循环层数(n默认为1)
continue 跳出本次循环
处理循环后的数据
可以在done后添加重定向和管道
read 读取控制台输入
read [选项] (变量)
选项 | 功能 |
-p | 指定读取值的提示符 |
-t | 指定读取值时的等待时间(秒) |
-d | 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。 |
-n | 后跟一个数字,定义输入文本的长度,很实用。 |
-r | 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了 |
-s | 输入的数据不在显示器中显示 |