一 条件测试
1.1 test
test 测试文件的表达式 是否成立
- 格式1:test 条件表达式
- 格式2:[ 条件表达式 ]
ps:
- 注意[]空格,否则会失败
- 测试 是否成功使用 $? 返回值
- [ 操作符 文件或目录 ]
文件测试常见选项:
| 常见的测试操作符 | 含义 |
|---|---|
| -d | 测试是否为目录(directory) |
| -e | 测试目录或文件是否存在(Exist) |
| -f | 测试是否为文件(File) |
| -r | 测试当前用户是否有权限读取(Read) |
| -w | 测试当前用户是否有权限写入(Write) |
| -x | 测试当前用户是否有权限执行(eXcute) |
| -L | 测试是否为软连接文件 |
| -nt | 判断文件A是否比文件B新 |
| -ot | 判断文件A是否比文件B旧 |
| -ef | 判断两个文件是否为同一文件 |
1.2 整数值比较
格式:
[ 整数1 操作符 整数2 ]
| 操作符 | 含义 |
|---|---|
| -eq | 等于(Equal) |
| -ne | 不等于(Not Equal) |
| -lt | 小于(Leser Than) |
| -gt | 大于(Greater Than) |
| -le | 小于或等于(Lesser or Equal) |
| -ge | 大于或等于(Greater or Equal) |
1.3 字符串比较
格式:
[ 字符串1 = 字符串2 ] #判断是否相等
[ 字符串1 != 字符串2 ] #判断是否不等
[ -z 字符串 ] #判断字符串内容是否为空
操作符:
| 操作符 | 含义 |
|---|---|
| = | 字符串内容相同 |
| != | 字符串内容不同,!号表示相反的意思 |
| -z | 字符串内容为空 |
1.4 逻辑测试
格式:
- [ 表达式1 ] 操作符 [ 表达式2 ]
- 命令1 操作符 命令2
操作符:
| 操作符 | 作用 |
|---|---|
| -a或&& | 逻辑与,而且的意思 |
| -o或▕▕ | 逻辑或,或者的意思 |
| ! | 逻辑否 |
二 if语句
单分支结构
if 判断条件
then 条件为真的分支代码
fi
双分支结构
if 判断条件
then
条件为真的分支代码
else
条件为假的分支代码
fi
#/bin/bash
read -p "请输入yes确定重启:" TEST
if [ $TEST = "yes" ]
then
echo 系统即将重启
else
echo 没有输入yes,系统将不重启
fi
多分支结构
if 判断条件1
then
条件1为真的分支代码
elif 判断条件2
then
条件2为真的分支代码
elif 判断条件3;then
条件3为真的分支代码
...
else
以上条件都为假的分支代码
fi
read -p "请输入yes或no:" TEST
if [ $TEST = "yes" ]
then
echo 你输入的为$TEST!
elif [ $TEST = "no" ]
then
echo 你输入的为$TEST!
else
echo 你输入的${TEST}有错误,请重启输入yes或者no!
fi
case语句
格式:
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
注意点:
-
case行首必须以单词“in”,每一模式必须以单个右括号")"结束
-
双分号";;"表示命令序列的结束
-
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
-
最后的 )表示默认模式,其中的相当于通配符
#不管输出大小写字母,都能输出yes或者no #!/bin/bash read -p "请输入yes或者no:" i case $i in [Yy]|[Yy][Ee][Ss]) echo "你输入的yes正确" ;; [Nn]|[Nn][Oo]) echo "你输入的no正确" ;; esac
echo
格式: echo 转义字符 *
| 转义符号 | 含义 |
|---|---|
| -n | 表示不换行输出 |
| \e | 输出转义字符,将转义后的内容输出到屏幕上 |
| \b | 转义后相当于按退格键,但前提是b后面存在字符: b表示删除前一个字符,\b\b表示删除前两个字 符 |
| \c | 不换行输出,当\c后面存在字符时,后面的字符不会被输出 |
| \n | 换行,被输出的字符从\n除开始另起一行 |
| \f或\v | 换行,但是换行后的新行的开头位置连接着上一行的行尾 |
| \t | 转以后表示插入tab,即横向制表符 |
| \r | 光标移至行首,用后面的字符覆盖等长度的前面的字符 |