shell-条件(if)+循环语句(for)

本文详细介绍了Shell脚本中的条件判断语句和循环语句的使用,包括条件判断的语法结构、相关参数、多重条件判断及应用实例。在循环语句部分,讲解了for循环的三种形式及其应用示例。通过具体的实验和案例,如判断文件类型、权限、新旧,字符串比较,进程和用户存在性,以及内核版本检查等,深入浅出地展示了Shell脚本中的控制流操作。
摘要由CSDN通过智能技术生成

今日主题:

  • 条件判断语句 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 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值