卖不甜枣 发表于 2024-11-22 14:43:14

Shell脚本6 -- 条件判断if

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,全部内容仅限于网络安全技术的交流学习,不涉及任何陵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立刻删除相干内容。
本文旨在资助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,公道合法利用相干知识。
在 Shell 脚本中,if 语句是实现条件判断和分支逻辑的核心语法。通过利用 if,我们可以根据条件实行差别的操作,使脚本更加灵活和强盛。本文将先容 if 语句的根本语法、常见利用场景及注意事项。
1 根本语法

Shell 中的 if 语句的根本布局如下:
if 条件; then
    命令1
    命令2
fi
常见的扩展情势包括:

[*]if-else 语句:
if 条件; then
        命令1
else
        命令2
fi

[*]if-elif-else 语句:
if 条件1; then
        命令1
elif 条件2; then
        命令2
else
        命令3
fi
2 条件判断方式

在 if 中,条件判断紧张依赖 test 或 [] 下令。以下是常见的条件表达式:
2.1 文件条件



[*]-e file:文件存在。
[*]-d file:文件是目录。
[*]-f file:文件是普通文件。
[*]-s file:文件大小非零。
示例:
if [ -e "/etc/passwd" ]; then
        echo "文件存在"
fi
https://img-blog.csdnimg.cn/img_convert/b86857cc85afc666e52a79e760e1203e.png
2.2 字符串条件



[*][ "$a" = "$b" ]:判断字符串是否相等。
[*][ -z "$a" ]:判断字符串是否为空。
示例:
if [ "$USER" = "root" ]; then
        echo "当前用户是 root"
fi
https://img-blog.csdnimg.cn/img_convert/aa2cd449618d3f6a2698346314bc6535.png
2.3 数值条件



[*]-eq:等于。
[*]-ne:不等于。
[*]-gt:大于。
[*]-lt:小于。
示例:
if [ "$1" -gt 10 ]; then
        echo "参数大于 10"
fi
https://img-blog.csdnimg.cn/img_convert/b8509a487211c2f711eeb8760627beac.png
2.4 逻辑运算符



[*] [ 条件1 -a 条件2 ] 大概 [ 条件1 ] && [ 条件2 ]:逻辑与。
[*] [ 条件1 -o 条件2 ] 大概 [ 条件1 ] || [ 条件2 ]:逻辑或。
[*] ! 条件:逻辑非。
示例:
if [ -z "$1" ] || [ -z "$2" ]; then
    echo "请提供两个参数"
    exit 1
fi

if [ "$1" -lt 10 -a "$2" -lt 10 ]; then
    echo "参数1和参数2都小于10"
fi

https://img-blog.csdnimg.cn/img_convert/9d0424a327361140f4c9191153f710ba.png
3 示例

3.2 示例 1:检查文件类型

#!/bin/bash
file="/etc/passwd"

if [ -f "$file" ]; then
    echo "$file 是一个普通文件"
elif [ -d "$file" ]; then
    echo "$file 是一个目录"
else
    echo "$file 不存在或类型未知"
fi
https://img-blog.csdnimg.cn/img_convert/653994db4409a9a07ca6873fc1317620.png
3.2 示例 2:判断用户输入

#!/bin/bash
read -p "请输入一个数字:" number

if [ "$number" -gt 0 ]; then
    echo "这是一个正数"
elif [ "$number" -lt 0 ]; then
    echo "这是一个负数"
else
    echo "这是零"
fi
https://img-blog.csdnimg.cn/img_convert/d545a5210d7f46247fd523f9ebf0acf9.png
3.2 示例 3:综合逻辑判断

#!/bin/bash
if [ $# -eq 2 ]; then
    echo "参数数量正确"
    if [ "$1" = "$2" ]; then
      echo "两个参数相等"
    else
      echo "两个参数不相等"
    fi
else
    echo "请输入两个参数"
fi
https://img-blog.csdnimg.cn/img_convert/1fbedaeb5dd3f515fbdb2e2edea74c10.png
4 注意事项


[*] 条件语句的书写:

[*]条件表达式中的变量应加引号,防止因空值导致语法错误。
[*][ 条件 ] 和条件内容之间必要有空格,否则会报错。

[*] 利用 test 下令:

[*]test 下令和 [] 等价,可以直接利用,如:if test -e "/etc/passwd"; then
    echo "文件存在"
fi


[*] Shell 的兼容性问题:

[*]在 bash 和 sh 中,if 的语法一致,但某些高级功能可能在差别版本中表现差别。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Shell脚本6 -- 条件判断if