if条件语句
条件测试
test
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1 :test 条件表达式;格式2 :[ 条件表达式 ]
echo $?
参数 | 作用 |
---|---|
-d | 测试是否为目录 (Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件 (File) |
-r | 测试当前用户是否有权限读取 (Read) |
-w | 测试当前用户是否有权限写入 (Write) |
-x | 测试当前用户是否有权限执行 (eXcute) |
整数值比较
[ 整数1 操作符 整数2 ]
在shell脚本中,以下操作符只能比较整数
常用的测试操作符 | 含义 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-gt | 大于(Greater Than) |
-lt | 小于(Lesser Than) |
-le | 小于或等于 (Lesser or Equal) |
-ge | 大于或等于 (Greater or Equal) |
如何能够比较字符串?
这样当然也可以比较整数,但符号两边要相同
操作符 | 含义 |
---|---|
“==” | 等于 |
“!=” | 不等于 |
“>” | 大于 |
“<” | 小于 |
“>=” | 大于或等于 |
“<=” | 小于或等于 |
注意
逻辑测试
格式1: [ 表达式1 ] 操作符 [ 表达式2 ]
格式2: 命令1 操作符 命令2
常用的测试操作符
- -a或&&: 逻辑与,“而且”的意思
- -o或||: 逻辑或,“或者”的意思
- !:逻辑否,”否定或取反“的意思
if语句结构
1单分支结构
if 条件测试操作
then 命令序列
fi
逻辑关系
- 实验一
输入一个整数,如果这个数等于2,则输出win
2双分支结构
if 条件测试操作
then 命令序列1
else 命令序列2
fi
逻辑关系
- 实验二
输入一个整数,大于2小于10就输出win,不然就输出fail
3多分支结构
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
- 实验三
输入分数,大于等于85小于等于100为等级a,大于等于70小于等于84为b,大于等于60.小于等于69为c,其他为d
4嵌套循环结构
if条件测试操作1
then
if 条件测试操作2
then
命令序列2
elif 条件测试操作3
then
命令序列3
else
命令序列4
fi
else
命令序列5
fi
- 实验四
过滤整数,同时分数大于等于85小于等于100为等级a,大于等于70小于等于84为b,其他分数为c
case语句结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
.....
*)
默认命令序列
esac
逻辑关系:
- 实验五
date查看时间
date
date查看当前系统时间
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
% T 时间(24小时制)(hh:mm:ss)
[root@localhost ~]# date -d ‘-1 day’ +%F
2021-10-21
[root@localhost ~]# date +%F
2021-08-19
[root@localhost ~]# date -d '1 day ’ +%F-%T
2021-08-20-23:28:42
[root@localhost mnt]# date -d “-3 day” 前三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost mnt]# date -d “+3 day” 后三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost data]#date -d ‘1 day ’ +%F’ '%T
2021-10-22 00:45:37