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

如何编写Shell Script检查TS文件变量值,构建前校验不符合则报错退出

原脚本失效原因
  • 文件路径不匹配:原脚本读取的是App/env/index.tsx,你实际使用的配置文件是env.ts,路径不一致导致读取不到目标变量
  • 行号硬编码不合理:你实际的env.ts第一行为注释内容,SDK构建变量定义在第二行,原脚本直接取前两行切割,拿到的是注释行的内容,无法匹配到目标变量
  • 字段切割逻辑脆弱:硬编码取空格分隔后的第5个字段,一旦代码中出现多空格、制表符、格式调整,就会拿到错误的值
正确实现方案

推荐用grep精准匹配变量名,避免硬编码行号和字段位置,适配性更强:

#!/bin/bash
# 按需修改以下两个配置项即可
ENV_FILE="./env.ts"
TARGET_VAR="SDK_BUILD"

# 精准提取目标变量的值
VAR_VAL=$(grep "^export const ${TARGET_VAR}" "${ENV_FILE}" | awk -F'[ =]' '{print $NF}' | tr -d '[:space:]')

# 变量为false时终止构建
if [[ "${VAR_VAL}" = "false" ]]; then
    echo "Error! 请将${ENV_FILE}中的${TARGET_VAR}设置为true后再构建" 1>&2
    exit 64
fi

脚本逻辑说明:

  • grep自动过滤注释行、其他变量行,精准匹配目标变量的定义行
  • awk同时按空格和等号做分隔,直接取最后一个字段的值,不受中间空格数量的影响
  • tr清除所有空白字符,避免换行、多余空格干扰判断结果
可选增强校验

可以增加配置文件存在性判断,避免配置文件丢失导致的逻辑异常,在提取变量值前加入以下代码即可:

if [[ ! -f "${ENV_FILE}" ]]; then
    echo "Error! 配置文件${ENV_FILE}不存在" 1>&2
    exit 65
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:39:02