共计 1586 个字符,预计需要花费 4 分钟才能阅读完成。
if 是一个条件判断语句,判断的前提是得有个条件。so,条件就显得格外重要了,if 中可以有哪些条件呢?接下来我们就来聊一聊 if 条件的问题。
我们在之前的课程中学习了 shell 的运算,有比较运算、逻辑运算、文件运算等,这些运算可以植入到 if 条件中吗?答案是肯定的,接下来我就给大家演示一下如何在 if 条件中植入 shell 运算条件
一、与文件存在与否的判断
-e 是否存在 不管是文件还是目录,只要存在,条件就成立
-f 是否为普通文件
-d 是否为目录
-S socket
-p pipe
-c character
-b block
-L 软 link
- 文件权限相关的判断
-r 当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有 suid
-g 是否 sgid
-k 是否有 t 位
- 两个文件的比较判断
file1 -nt file2 比较 file1 是否比 file2 新
file1 -ot file2 比较 file1 是否比 file2 旧
file1 -ef file2 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个 inode
- 整数之间的判断
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
浮点比较运算
比较两个浮点数字的大小
给脚本两个浮点数字 返回他两的关系
#思路
1、获得两个浮点数字
2、处理为整形
3、比较
4、输出
- 字符串之间的判断
-z 是否为空字符串 字符串长度为 0,就成立
-n 是否为非空字符串 只要字符串非空,就是成立
string1 == string2 是否相等
string1 != string2 不等
#用户登录验证
[root@zutuanxue ~]# cat if-6.sh
#!/bin/bash
#1、交互式输入用户名 密码
read -p "user:" myuser
if [-z "$myuser"];then
echo "用户名为空"
exit 1
fi
#从外往里写
read -p "password:" mypw
if [-n "$mypw"];then
#2、判断是否正确
#2.1 判断用户名
if [$myuser == "root"];then
#2.2 判断密码
if [$mypw == "abc-123"];then
echo "welcome root"
else
echo "密码错误"
exit 1
fi
else
echo "用户名错误"
exit 1
fi
else
echo "密码不能为空"
exit 1
fi
- 多重条件判断
逻辑判断符号:&& (and 逻辑与) 两个条件同时满足,整个大条件为真
|| (or 逻辑或) 两个条件满足任意一个,整个大条件为真!非运算
#用户登录验证
[root@zutuanxue ~]# cat if-6.sh
#!/bin/bash
#1、交互式输入用户名 密码
read -p "user:" myuser
if [-z "$myuser"];then
echo "用户名为空"
exit 1
fi
#从外往里写
read -p "password:" mypw
if [-n "$mypw"];then
#2、判断是否正确
#2.1 判断用户名
#if [$myuser == "root"];then
#2.2 判断密码
# if [$mypw == "abc-123"];then
# echo "welcome root"
#else
# echo "密码错误"
# exit 1
# fi
#
#else
# echo "用户名错误"
# exit 1
#fi
if [$myuser == 'root'] && [$mypw == 'abc-123'];then
echo "welcome root"
else
echo "用户名或密码错误"
exit 1
fi
else
echo "密码不能为空"
exit 1
fi
二、课后练习
练习题 1、判断 /tmp/tyschool 目录,如果没有则创建它
练习题 2、判断是否有 /usr/bin/wget 命令,没有则安装他
练习题 3、判断当前用户是否为管理员,UID 为 0 或者为 root 都算管理员
练习题 4、打印物理内存使用率
三、学习视频
视频:if 与 shell 运算 01
视频:if 与 shell 运算 02
正文完
星哥玩云-微信公众号