欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 渗透测试---shell(6)if条件判断与for循环结构

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

2025/6/1 15:59:13 来源:https://blog.csdn.net/2301_79949226/article/details/144001264  浏览:    关键词:渗透测试---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部分。

 


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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词