文章目录
一,条件测试
1.1 文件测试与整数测试
1.1.1 test 命令
测试表达式是否成立,若成立,则返回0,否则返回其他数值(返回值使用 echo $? 查看)
格式1: test 条件表达式
格式2: [ 条件表达式 ] *#条件表达式与中括号两边至少各有一个空格
1.1.2 文件测试
[ 操作符 文件或目录 ]
注意: 中括号两边要有空格
文件运算符 | 释义 | 示例 |
---|---|---|
-e filename | 如果filename 存在, | 则为真 [ -e /etc/passwd ] |
-f filename | 如果filename 存在,且为目录,则为真 | [ -d /opt ] |
-d filename | 如果filename 存在 ,且为文件,则为真 | [ -f /etc/passwd ] |
-L filename | 如果fiename 存在,且为软连接,则为真 | [ -L /bin ] |
-r filename | 如果filename存在,且当前用户可读,则为真 | [ -r /etc/passwd ] |
-w filename | 如果filename存在,且当前用户可写,则为真 | [ -w /etc/passwd ] |
-x filename | 如果filename 存在,且当前用户可执行,则为真 | [ -x /usr/bin/umake ] |
-s filename | 如果filename存在,且不为空文件,则为真 | [ -s /etc/passwd ] |
-S filename | 如果filename 存在,且为空,则为真 | [ -S /etc/passwd ] |
filename1 -nt filename2 | 如果 filename 1 比 filename 2 新,则为真 | [ /etc/passwd -nt /etc/group ] |
filename1 -ot filename2 | 如果 filename1 比 filename2 旧, 则为真 | [ /etc/passwd -ot /etc/group ] |
1.1.3整数值比较
【整数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.1 字符串比较
格式1:
【 字符串1 = 字符串2】 #字符串一样为真
【 字符串1!=字符串2】 #字符串不一样为真
格式2:
【 -z 字符串】 #字符串为空,则为真
【 -n 字符串】 #字符串不为空,则为真
操作符 | 释义 |
---|---|
= | 测试字符串是否一样 |
!= | 测试字符串是否不一样,不一样为真 |
-z | 测试字符串是否为空,为空则为真 |
-n | 测试字符串是否不为空,不为空则为真 |
设两个变量:
a=abc
b=123
注意区分输入法
1.2.2逻辑测试
格式:
【表达式1】 操作符 【表达式2】……
或:
【命令1】 操作符 【命令2】
操作符 | 释义 |
---|---|
-a 或者 && | 逻辑与,“而且”的意思 |
-o 或者 ll | 逻辑或,“或者” 的意思 |
! | 逻辑否(逻辑非) |
-f判断a是不是文件,-r判断a是否可读,如果满足条件,则cat a
&&逻辑与:前面的条件都执行成功,才执行后面的条件
||,逻辑或,只要满足一个条件,则执行后面的语句
单中括号"[ ]“内,多个逻辑判断,使用 文字操作符 “-a” “-o”
两个中括号之间 “[ ] [ ]” 逻辑测试,使用字符操作符 " &&” “||”
双中括号之间"[[ ]]" 逻辑测试,使用字操作符 “&&”"||"
二,if语句
if 条件测试
then 命令序列
fi
新建一个.sh脚本文件
如果不是直接结束语句(上图)
2.2 if多分支语句
if 条件判断
then 命令序列1
else 命令序列2
fi
与上面的就是多了一个不满足条件后可以输出
2.3 if多分支语句
if 条件测试
then 命令序列1
elif 条件测试2
then 命令序列2
elif 条件测试3
then 命令序列3
......
else
命令序列4
fi
三,case语句
case 可以用来判断一个变量的不同取值
格式:
case $变量 in
值1)
命令序列1 ;;
值2)
命令序列2 ;;
*)
命令序列3 ;;
esac
创建一个casetest.sh文件
三种运行结果