Shell脚本6 -- 条件判断if

打印 上一主题 下一主题

主题 846|帖子 846|积分 2538

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,全部内容仅限于网络安全技术的交流学习,不涉及任何陵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立刻删除相干内容。
本文旨在资助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,公道合法利用相干知识。


在 Shell 脚本中,if 语句是实现条件判断和分支逻辑的核心语法。通过利用 if,我们可以根据条件实行差别的操作,使脚本更加灵活和强盛。本文将先容 if 语句的根本语法、常见利用场景及注意事项。

1 根本语法

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

  • if-else 语句:
  1. if 条件; then
  2.         命令1
  3. else
  4.         命令2
  5. fi
复制代码

  • if-elif-else 语句:
  1. if 条件1; then
  2.         命令1
  3. elif 条件2; then
  4.         命令2
  5. else
  6.         命令3
  7. fi
复制代码

2 条件判断方式

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



  • -e file:文件存在。
  • -d file:文件是目录。
  • -f file:文件是普通文件。
  • -s file:文件大小非零。
示例:
  1. if [ -e "/etc/passwd" ]; then
  2.         echo "文件存在"
  3. fi
复制代码

2.2 字符串条件



  • [ "$a" = "$b" ]:判断字符串是否相等。
  • [ -z "$a" ]:判断字符串是否为空。
示例:
  1. if [ "$USER" = "root" ]; then
  2.         echo "当前用户是 root"
  3. fi
复制代码

2.3 数值条件



  • -eq:等于。
  • -ne:不等于。
  • -gt:大于。
  • -lt:小于。
示例:
  1. if [ "$1" -gt 10 ]; then
  2.         echo "参数大于 10"
  3. fi
复制代码

2.4 逻辑运算符



  • [ 条件1 -a 条件2 ] 大概 [ 条件1 ] && [ 条件2 ]:逻辑与。
  • [ 条件1 -o 条件2 ] 大概 [ 条件1 ] || [ 条件2 ]:逻辑或。
  • ! 条件:逻辑非。
    示例:
  1. if [ -z "$1" ] || [ -z "$2" ]; then
  2.     echo "请提供两个参数"
  3.     exit 1
  4. fi
  5. if [ "$1" -lt 10 -a "$2" -lt 10 ]; then
  6.     echo "参数1和参数2都小于10"
  7. fi
复制代码


3 示例

3.2 示例 1:检查文件类型

  1. #!/bin/bash
  2. file="/etc/passwd"
  3. if [ -f "$file" ]; then
  4.     echo "$file 是一个普通文件"
  5. elif [ -d "$file" ]; then
  6.     echo "$file 是一个目录"
  7. else
  8.     echo "$file 不存在或类型未知"
  9. fi
复制代码

3.2 示例 2:判断用户输入

  1. #!/bin/bash
  2. read -p "请输入一个数字:" number
  3. if [ "$number" -gt 0 ]; then
  4.     echo "这是一个正数"
  5. elif [ "$number" -lt 0 ]; then
  6.     echo "这是一个负数"
  7. else
  8.     echo "这是零"
  9. fi
复制代码

3.2 示例 3:综合逻辑判断

  1. #!/bin/bash
  2. if [ $# -eq 2 ]; then
  3.     echo "参数数量正确"
  4.     if [ "$1" = "$2" ]; then
  5.         echo "两个参数相等"
  6.     else
  7.         echo "两个参数不相等"
  8.     fi
  9. else
  10.     echo "请输入两个参数"
  11. fi
复制代码


4 注意事项


  • 条件语句的书写:

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

  • 利用 test 下令:

    • test 下令和 [] 等价,可以直接利用,如:
      1. if test -e "/etc/passwd"; then
      2.     echo "文件存在"
      3. fi
      复制代码

  • Shell 的兼容性问题:

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表