当前位置: 首页 > article >正文

渗透测试---shell(6)if条件判断与for循环结构

声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人与泷羽sec团队一律不承担一切后果

目录

一、if条件判断

1.elif嵌套

2.配合[[ ]]书写正则表达式

3.反向判断

4.检查多个文件类型

 5.结合命令替换

二、for循环结构

1.遍历变量

2.结合if条件判断

3.命令衔接 


一、if条件判断

1.elif嵌套

1.vim k.sh

2.写入内容:

a=10
b=20
if [ $a -eq $b ]; then
    echo "a=b"
elif [ $a -gt $b ]; then
    echo "a>b"
elif [ $a -lt $b ]; then
    echo "a<b"
else
    echo "没有符合上述条件"
fi

if [[ $string =~ ^[0-9]+$ ]]; then  
    echo "字符串是一个数字"  
fi

3.执行

2.配合[[ ]]书写正则表达式

  • [[ ... ]]: 这是一个扩展的测试命令,比单方括号[更灵活,适用于字符串比较和模式匹配。

if [[ $string =~ ^[0-9]+$ ]]; then  
    echo "字符串是一个数字"  
fi

eg:
string="478284742"
if [[ "$string" =~ ^[0-9]+$ ]]; then  
    echo "字符串是一个数字"  
fi

解释:

  • =~: 表示使用正则表达式进行匹配。

  • ^[0-9]+$: 这是一个正则表达式,具体含义如下

    • ^: 匹配字符串的开始。
    • [0-9]+: 匹配一个或多个数字(0-9)。
    • $: 匹配字符串的结束。

    在这个正则表达式的组合下,^[0-9]+$表示整个字符串必须是由一个或多个数字组成,且没有其他字符(例如字母、空格等)。

执行:

        

3.反向判断

if ! ping -c 1 "$host" &> /dev/null; then  
    echo "$host 不可达"  
fi

eg:

执行:

4.检查多个文件类型

if [[ -e $path ]]; then  
    if [[ -d $path ]]; then  
        echo "$path 是一个目录"  
    elif [[ -f $path ]]; then  
        echo "$path 是一个文件"  
    fi  
else  
    echo "$path 不存在"  
fi

 5.结合命令替换

if [[ $(curl -Is "$url" | head -n 1) == *"200"* ]]; then  
    echo "网址是可用的"  
fi

二、for循环结构

1.遍历变量

for num in 1 2 3 4 5;
do
    echo "The number is $num"
done

执行:

2.结合if条件判断

{ }高级用法:使用bash解释器

for i in {1..10};

do  
    if [ $((i % 2)) -eq 0 ]; then  
        echo "$i 是偶数"  
    else  
        echo "$i 是奇数"  
    fi  
done

执行

3.命令衔接 

for user in $(cat users.txt); do  
    if id "$user" &>/dev/null; then  
        echo "$user 存在"  
    else  
        echo "$user 不存在"  
    fi  
done
  1. for user in $(cat users.txt); do:     cat users.txt:这个命令用于读取users.txt文件的内容。
    • $(...):命令替换,它会把cat users.txt的输出结果作为一个空格分隔的字符串传递给for循环。
    • for user in ...; do:这个循环会遍历文件中的每一行(在这个上下文中是每一个用户名),将每一个用户名赋值给变量user
  2. if id "$user" &>/dev/null; then:

    • id "$user"id命令用于获取与指定用户名相关的用户和组信息。如果用户存在,命令会返回用户的详细信息;如果用户不存在,命令会产生错误。
    • &>/dev/null:这个部分是将id命令的所有输出(标准输出和标准错误)重定向到/dev/null,这意味着不显示任何输出,只是消耗掉。其目的是让脚本在执行时“安静”地运行,不显示任何错误消息。
    • if ...; then:开始一个条件判断,如果id命令成功(即用户存在),那么进入then部分。

 


好啦,本文的内容就到此了,还有后续吼。。


http://www.kler.cn/a/408656.html

相关文章:

  • Docker1:认识docker、在Linux中安装docker
  • 一文学习开源框架OkHttp
  • 图形渲染性能优化
  • 【漏洞复现】广州锦铭泰软件 F22服装管理软件系统 Load.ashx 任意文件读取漏洞
  • 使用timm库加载模型与模型权重
  • Excel的图表使用和导出准备
  • Vue小项目(开发一个购物车)
  • realme gt neo6官方刷机包 全量升级包下载
  • jar包解压和重新打包
  • 微信小程序 表单验证(async-validator)
  • 基于Gradle搭建Spring6.2.x版本源码阅读环境
  • Alluxio在小红书的实践:加速云端机器学习
  • HarmonyOS Next 浅谈 发布-订阅模式
  • 【热门主题】000062 云原生后端:开启高效开发新时代
  • IDEA运行程序》java: 程序包XX不存在
  • shell编程之awk
  • MySQL:IF()函数根据指定条件返回不同的值
  • 【ubuntu+win】Win10+Ubuntu22.04双系统给ubuntu系统中的某个分区进行扩容(从400G->800G)数据无损坏
  • Vue实训---4-使用Pinia实现menu菜单展示/隐藏
  • AWS EventBridge 和 Lambda 监控 ECS 事件并发送钉钉通知
  • Unity图形学之着色器之间传递参数
  • 《AI大模型开发笔记》——LangChain快速入门
  • 数据结构 【带环链表2】
  • spf算法、三类LSA、区间防环路机制/规则、虚连接
  • 实时数据研发|Flink关键概念,什么是无界、有界数据集,流、批?
  • 设计模式之 解释器模式