Bash脚本exit 1前echo语句未执行?GitHub Actions脚本需求咨询
问题解决:Bash脚本exit 1前echo未执行及需求适配
问题分析
你遇到的echo未执行,大概率是以下原因:
GRADE变量未定义、为空或非数字,导致[ $GRADE -lt 7 ]触发语法错误,若脚本开启了set -e会直接退出;未开启的话也会因判断命令返回非0,错误进入else分支,跳过exit1前的echo。$GITHUB_OUTPUT路径未加引号,若路径含空格或特殊字符,会导致重定向失败。
修正后的脚本
# 先验证GRADE是否为有效正整数 if ! [[ "$GRADE" =~ ^[0-9]+$ ]]; then echo "rating=invalid" >> "$GITHUB_OUTPUT" exit 1 fi # 按需求判断等级 if [ "$GRADE" -lt 7 ]; then echo "rating=failure" >> "$GITHUB_OUTPUT" exit 1 else echo "rating=success" >> "$GITHUB_OUTPUT" exit 0 fi
关键优化点
- 给所有变量引用加双引号:避免空值、特殊字符引发的语法错误或路径解析问题。
- 增加变量有效性校验:提前拦截非数字输入,避免后续判断出错,同时输出明确的invalid状态。
- 严格遵循需求:小于7时输出failure并返回1触发GitHub Action失败,否则输出success并正常退出。
内容的提问来源于stack exchange,提问作者basant
相关产品推荐
相关产品推荐

