You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本IF语句与逻辑运算符判断文件存在结果不符合预期

问题修复方案

错误原因

你的分支判断逻辑完全和预期需求倒置,是输出结果不符合预期的核心原因:

  • 第一个if分支的判断条件为前两个文件存在、第三个文件不存在就返回Yes,和你要求的「三个文件全部存在返回Yes」完全不符
  • elif分支的判断逻辑为「任意一个文件不存在」就返回Partially,哪怕三个文件全部不存在也会命中该分支,永远走不到返回No的else分支
  • 仅有的else分支只有在三个文件全部存在时才会触发,返回No,完全和需求倒置

修复后代码

建议先统计存在的文件数量再做分支判断,逻辑更清晰不易出错:

function IsPortalDown() {
  case "$1" in
    NodeOne )
      # 统计存在的文件数量
      exist_count=0
      [[ -f "$wpsdmgr" ]] && ((exist_count++))
      [[ -f "$wpsnodeagent" ]] && ((exist_count++))
      [[ -f "$wpsserver" ]] && ((exist_count++))
      
      if [[ $exist_count -eq 3 ]]; then
        echo "Yes"
      elif [[ $exist_count -ge 1 ]]; then
        echo "Partially"
      else
        echo "No"
      fi
      ;;
    NodeTwo )
      ;;
  esac
}

注意事项

  • 三个路径常量wpsdmgr、wpsnodeagent、wpsserver必须定义在函数调用之前,否则变量为空会导致判断失效
  • 代码里给变量加了双引号,避免路径存在空格时解析错误

内容的提问来源于stack exchange,提问作者Nizar Yousri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 14:09:03