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

如何区分git grep未检出违禁词与命令执行错误并调整退出状态

改进Git违禁字符串检查脚本

先明确git grep的退出码规则:

  • 0:成功找到匹配的字符串
  • 1:未找到任何匹配
  • ≥2:命令执行出错(比如参数错误、不在Git仓库内等)

根据你的需求,我们可以通过捕获命令的退出码来区分这三种情况,确保只有确认无违禁词时返回唯一状态码,检出违禁词或执行出错时返回相同状态。改进后的脚本如下:

#!/bin/bash

# 执行git grep并保存退出码
git grep --full-name --extended-regexp --line-number 'bad|words'
exit_code=$?

# 根据退出码分支处理
if [ $exit_code -eq 0 ]; then
    echo "检测到违禁词"
    exit 1  # 检出违禁词时返回非0状态
elif [ $exit_code -eq 1 ]; then
    echo "未检测到违禁词"
    exit 0  # 仅这里返回唯一的确认无违禁词状态码
else
    echo "git grep执行出错,无法确认是否存在违禁词" >&2
    exit 1  # 执行错误时和检出违禁词返回相同状态
fi

关键说明:

  • 先执行git grep并通过exit_code=$?捕获退出码,避免原脚本直接用if判断时,把"未找到匹配"和"命令执行错误"两种非0情况混为一谈的问题
  • 明确区分三种状态:
    • 退出码0:找到违禁词,输出提示后返回1
    • 退出码1:确认无违禁词,返回0(这是唯一的确认状态)
    • 退出码≥2:执行出错,把错误提示输出到标准错误流(>&2),然后返回1,和检出违禁词的状态一致
  • 外部调用脚本时,可通过返回码快速判断:
    • 返回0:确定无违禁词
    • 返回1:要么有违禁词,要么脚本执行出错,需要进一步排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:11:03