今日主题:
- 条件判断语句 if
- 循环语句 for
一、条件判断语句
1-1.条件判断语法结构
1.条件判断语法格式
(1)格式一
test : 检测文件类型和值
$? 值为0时,表示上一条命令执行成功;值为1表示命令执行失败。
(2)格式二 [ ]
(3)[[ ]]支持正则表达式
2.特别说明
中括号两边 [ ] 需要空格空间!
**3.更多用法 **
man test
1-2.条件判断相关参数
linux下一切接文件(设备、文档、目录均是文件)
1.判断文件类型
2.判断权限
3.判断文件新旧
4.判断字符串是否相等
*参数记不全没关系,知识体系要有。
实验一:判断文件类型
判断软链接时,如果原链接的文件不存在,-L并不能检测出来。
解决方案是:先用-e判断链接的文件是否存在,然后再判断是否是一个软链接。
因此,判断文件是否是软连接,应该首先判断文件是否存在。
实验二:判断权限(判断文件你有没有权限)
[ -r /etc/passwd ] | 当前用户是否有读权限 |
---|---|
-w | 当前用户是否具有写权限 |
-x | 当前用户是否有执行权限 |
-u | 当前用户对其是否有suid特殊权限 |
-g | 当前用户对其是否有guid特殊权限 |
-k | 当前用户对其是否有o+t特殊权限 |
(1)o+t权限,/tmp 所有人都可以写,但是只有超级用户可以删除;
(2)u+s权限,/usr/bin/passwd,密码是存储在/etc/shadow(该文件对任何用户不具有读写执行权限),改密码都是以root用户写的;
实验三:判断文件新旧
文件最后一次修改的时间
实验四:判断整数数值大小
知识点:
1.反向单引号代表获取命令执行结果;
2.&&条件成立所执行的事情;
||条件不成立所执行的事情;
-eq | 等于 |
---|---|
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-le | 小于等于 |
-lt | 小于 |
实验五:判断字符串
-z | 判断是否为空字符串,判断字符串长度是否为0 (这个字符串为空吗) |
---|---|
-n | 判断是否为非空字符串 (这个字符串不为空吗?) |
string1 = string2/string1 == string2 | 判断字符串是否相等 |
string1 != string2 | 判断字符串是否不相等 |
1-3.多重条件判断
-a和&& | and 逻辑与,全真则真 |
---|---|
-o和双竖杠 | or 逻辑或,全假则假 |
tips:
(1)&&前面的表达式为真,才会执行后面的代码
(2)||前面的表达式为假,才会执行后面的代码
应用示例:
1.判断/etc/passwd是否存在,并且当前用户对它是否有读和写的权限
1-4.应用范例
1.根据当前用户登录的id判断是否为超级用户?uid=0代表超级用户;(以下分别写两个脚本)
(1)不是超级用户输出“the user is not root”
#! /usr/bin/bash
if [ `id -u` -ne 0 ];then
echo "the user is not root"
fi
(2)如果是超级用户输出“the user is root”,否则输出“the user is not root”
#! /usr/bin/bash
if [ `id -u` -eq 0 ];then
echo "the user is root"
else
echo "the user is not root"
fi
2.用户输入云服务器相关信息(主机名),判断主机名输入是否合法(即:主机名为空输出不合法,主机名不为空输出主机名)
#!/usr/bin/bash
read -p