我想使用 git grep 来检查存储库中是否有禁止的字符串。
if git grep --full-name --extended-regexp --line-number 'bad|words'
then
echo has bad words
else
echo does not have bad words
fi
这样做的一个问题是,如果
git grep
命令由于其他原因(例如格式错误)而失败,脚本会报告没有坏词,但实际上它不知道命令中是否有坏词。回购所以这样分支是不安全的。
我想知道
git grep
失败是因为它没有找到任何东西,还是因为它有另一个错误导致它退出,甚至没有尝试找到任何东西。
我希望
git grep
对于坏词返回与错误相同的退出状态。只有当它确认没有坏词时,才应该返回一个唯一的退出状态代码。
检查退出代码。由于有 3 种变体(已找到、未找到、错误),因此您不能只使用
if
/else
。
git grep --full-name --extended-regexp --line-number 'bad|words'
rc=$? # save exit code
if [ $rc -eq 0 ]
then
echo has bad words
elif [ $rc -eq 1 ]
echo does not have bad words
else
echo error >&2
fi
exit $rc # return the exit code back to the caller