Linux_shell脚本if语句具体教程

金歌  金牌会员 | 2025-2-12 20:24:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

媒介

在 Linux Shell 脚本中,if 语句用于基于条件实行命令或代码块。它的基本语法结构如下:
  1. if 条件; then
  2.     # 如果条件为真时执行的代码
  3. elif 另一个条件; then
  4.     # 如果另一个条件为真时执行的代码
  5. else
  6.     # 如果所有条件都不成立时执行的代码
  7. fi
复制代码

一、if 语句中 &&、|| 和 ! 的使用方法

1、&& (逻辑与)


  • && 用于连接两个命令,当左边的命令乐成(即返回值为0)时,右边的命令才会实行。
  1. # 语法结构:
  2. if 条件一 && 条件二; then
  3.     echo "条件一和条件二都执行成功"
  4. else
  5.     echo "条件一或条件二有失败"
  6. fi
复制代码
逻辑:


  • 假如 条件一 乐成(返回值为 0)且 条件二 也乐成(返回值为 0),then 分支会实行。
  • 假如 条件一 失败(返回非 0),大概 条件二 失败(返回非 0),else 分支会实行。
这个规则是基于“与”运算符:只有两个条件都乐成,then 才会实行。
  1. # 场景示例:检查一个文件是否存在且可执行
  2. #!/bin/bash
  3. FILE="/home/user/file.sh"
  4. # [ ] 写法
  5. if [ -e "$FILE" ] && [ -x "$FILE" ]; then
  6.     echo "[: 文件存在且可执行"
  7. else
  8.     echo "[: 文件不存在或不可执行"
  9. fi
  10. # [[ ]] 写法
  11. if [[ -e "$FILE" && -x "$FILE" ]]; then
  12.     echo "[[: 文件存在且可执行"
  13. else
  14.     echo "[[: 文件不存在或不可执行"
  15. fi
复制代码
2、|| (逻辑或)


  • || 用于连接两个命令,当左边的命令失败(即返回值不为0)时,右边的命令才会实行
  1. # 语法结构:
  2. if 条件一 || 条件二; then
  3.     echo "条件一或条件二执行成功"
  4. else
  5.     echo "条件一和条件二都执行失败"
  6. fi
复制代码
逻辑:


  • 假如 条件一 乐成(返回值为 0),then 分支会实行。
  • 假如 条件一 失败(返回非 0),则会查抄 条件二:
      假如 条件二 乐成(返回值为 0),then 分支也会实行。
      假如 条件一 和 条件二 都失败(返回非 0),则会实行 else 分支。
这个规则是基于“或”运算符:只要有一个条件乐成,then 就会实行。
  1. # 场景示例:检查目录是否存在,如果不存在则创建
  2. #!/bin/bash
  3. DIR="/home/user/mydir"
  4. if [[ -d "$DIR" ]] || mkdir "$DIR" > /dev/null 2>&1; then
  5.     echo "目录已存在或已成功创建"
  6. else
  7.     echo "创建目录失败"
  8. fi
复制代码
3、! (逻辑非)


  • ! 用于对一个条件举行取反。假如条件为真,! 会使其为假,反之亦然。
  1. # 语法结构:
  2. if ! 条件一; then
  3.     echo "条件一假,取反真"
  4. else
  5.     echo "条件一真,取反假"
  6. fi
复制代码

  1. # 示例
  2. #!/bin/bash
  3. if [ ! -f "file.txt" ]; then
  4.   echo "文件不存在"
  5. else
  6.   echo "文件存在"
  7. fi
复制代码

  1. #!/bin/bash
  2. # ! 与 && 配合使用
  3. if [ ! -f "file.txt" ] && echo "假如条件二成功"; then
  4.   echo "条件一(文件不存在,取反真)和条件二都执行成功"
  5. else
  6.   echo "条件一(文件存在,取反假)或条件二有失败"
  7. fi
复制代码

二、查抄文件和文件夹方法

1、判定文件是否存在 -f
  1. #!/bin/bash
  2. # 获取当前脚本文件所在的目录
  3. SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
  4. # 设置要检查的文件名
  5. file="${SCRIPT_DIR}/example.txt"
  6. echo ${file}
  7. # 判断文件是否存在
  8. if [ -f "$file" ]; then
  9.     echo "$file 文件存在"
  10. else
  11.     echo "$file 文件不存在"
  12. fi
复制代码
2、判定文件夹(目录)是否存在 -d
  1. # 设置要检查的目录名
  2. dir="/home/user/myfolder"
  3. # 判断目录是否存在
  4. if [ -d "$dir" ]; then
  5.     echo "$dir 目录存在"
  6. else
  7.     echo "$dir 目录不存在"
  8. fi
复制代码
其它参数阐明-e查抄文件或目录是否存在(不管是文件还是目录)-r查抄文件是否可读(非root权限下才能获取精确)-w查抄文件是否可写(非root权限下才能获取精确)-x查抄文件是否可实行(非root权限下才能获取精确) 三、字符串比较、数值比较及算术比较

1.整数数值对比
数值比较参数阐明-lt表示 “less than”(小于)-eq表示 “equal to”(便是)-ne表示 “not equal to”(不便是)-gt表示 “greater than”(大于)-ge表示 “greater than or equal to”(大于或便是)-le表示 “less than or equal to”(小于或便是) 示例
  1. #!/bin/bash
  2. a=2
  3. b=2
  4. if [[ $a -eq $b ]]; then
  5.     echo "$a 等于 $b"
  6. else
  7.     echo "$a 不等于 $b"
  8. fi
复制代码
2.字符串对比
字符串比较参数阐明==字符串相等!=字符串不相等 示例
  1. #!/bin/bash
  2. a="abcdef"
  3. b="abcde"
  4. # 比较字符串是否相等
  5. if [[ $a == $b ]]; then
  6.     echo "字符串 '$a' 和 '$b' 相等"
  7. else
  8.     echo "字符串 '$a' 和 '$b' 不相等"
  9. fi
  10. # 比较字符串是否不相等
  11. if [[ $a != $b ]]; then
  12.     echo "字符串 '$a' 和 '$b' 不相等"
  13. else
  14.     echo "字符串 '$a' 和 '$b' 相等"
  15. fi
复制代码
3、算术比较
算术比较参数阐明<小于==便是!=不便是>大于>=大于或便是<=小于或便是
  1. #!/bin/bash
  2. num1=5
  3. num2=5
  4. if (( num1 == num2 )); then
  5.   echo "${num1} 和 ${num2} 相等"
  6. else
  7.   echo "${num1} 和 ${num2} 不相等"
  8. fi
  9. a=10
  10. b=1
  11. if (( (a + b) > 10 )); then
  12.   echo "a 和 b 的和大于 10"
  13. fi
复制代码


四、查抄命令的退出状态

  1. #!/bin/bash
  2. # 执行某个命令
  3. ls /home > /dev/null 2>&1
  4. # 判断命令是否成功
  5. if [ $? -eq 0 ] ; then
  6.     echo "命令执行成功"
  7. else
  8.     echo "命令执行失败"
  9. fi
  10. # $? 存储的是上一个命令的退出状态。
  11. # 退出状态 0 通常表示命令成功执行,其他非零值表示命令执行失败。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

金歌

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

标签云

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