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

Mac平台Flutter开发环境启动Bash脚本报错排查求助

Bash脚本错误排查与修复

错误原因分析

  • 条件判断语法错误:[ 是Bash内置命令,必须与后续表达式之间保留空格,原脚本中["$1" == "android"]会被解析为[a这样的无效命令,导致command not found报错。
  • 变量赋值语法错误:Bash变量赋值时=两端不能有空格,原脚本中local ip = "localhost"、android = true等写法均不符合语法;同时给变量赋值时不能加$前缀,比如$ip = ...是错误写法,正确应为ip=...。
  • 未初始化默认变量:android和device变量未设置默认值,可能导致后续条件判断逻辑异常。
  • getopts错误处理语法错误:原脚本中/?应为\?,Bash中?是特殊字符,需要转义才能匹配无效选项。

修复后的完整脚本

function main(){
  check "$@"

  local ip="localhost"
  # 设置变量默认值
  [[ -z $android ]] && android=true
  [[ -z $device ]] && device=false

  if $android; then
    if $device; then
      echo "Running On Android Device"
      ip=$(ipconfig getifaddr en0)
    else
      echo "Running On Android Simulator"
      ip="10.0.2.2"
    fi
  else
    if $device; then
      echo "Running On IOS Device"
      ip=$(ipconfig getifaddr en0)
    else
      echo "Running On IOS Simulator"
      ip="localhost"
    fi
  fi

  echo "IP: $ip" 

  flutter run --dart-define="IP=$ip"
}

function check(){
  local OPTIND opt
  while getopts ":p:d" opt; do 
    case $opt in
      p) platform "$OPTARG";;
      d) device;;
      \?) help; exit 1 ;; 
      :) echo "Option -$OPTARG requires an argument."; exit 1 ;; 
      *) echo "Invalid option: -$OPTARG"; exit 1 ;; 
    esac
  done
}

function platform(){
  if [ "$1" == "android" ] || [ "$1" == "a" ]; then
    android=true
  elif [ "$1" == "ios" ] || [ "$1" == "i" ]; then
    android=false
  else 
    echo "Invalid platform, running on android by default"
    android=true
  fi
}

function device(){
  device=true
}

function help(){
  echo "This script only accepts the following options:"
  echo "-p [android|a|ios|i] : select platform"
  echo "-d : run on actual device"
}

main "$@"

关键修复点说明

  1. 所有条件判断的[后、]前添加空格,确保命令解析正确。
  2. 修正变量赋值语法,移除=两端空格,赋值时不再使用$前缀。
  3. 在main函数中为android和device设置默认值,避免未初始化导致的逻辑问题。
  4. 将getopts中的/?改为\?,正确匹配无效选项。
  5. 传递参数时使用"$@"而非$@,确保参数包含空格时也能正确解析。

内容的提问来源于stack exchange,提问作者Sami Al-Subhi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:55:17