如何让Grunt CLI仅返回退出码以用于Shell脚本条件判断?
关于Shell脚本中捕获Grunt命令退出码的实现方案
当然可以这么写!你的思路完全是正确的,而且我可以给你补充一些实用细节,帮你更灵活地实现需求:
基础实现:捕获退出码并判断
你给出的代码框架是可行的,不过还有更简洁的写法。Shell中,命令执行后的退出码会自动存在$?变量里,同时if语句可以直接判断命令的执行结果(退出码为0则视为成功):
方式一:用变量存储退出码
# 执行grunt任务,这里可以替换成你的具体grunt命令 grunt build GRUNT_EXIT_CODE=$? # 根据退出码执行后续逻辑 if [[ $GRUNT_EXIT_CODE -eq 0 ]]; then echo "Grunt任务执行成功!" # 这里可以添加成功后的操作,比如部署文件、发送通知等 else echo "Grunt任务执行失败,退出码:$GRUNT_EXIT_CODE" # 失败后的操作,比如终止脚本、记录错误日志等 fi
方式二:直接在if中判断命令结果(更简洁)
if grunt build; then echo "Success" # 成功操作 else echo "Failure" # 失败操作 fi
让Grunt仅输出退出码(抑制冗余输出)
如果你想让Grunt只返回退出码,不输出任何日志信息,可以通过重定向标准输出和错误输出到/dev/null来实现:
# 抑制所有输出,只保留退出码 grunt build > /dev/null 2>&1 GRUNT_EXIT_CODE=$? if [[ $GRUNT_EXIT_CODE -eq 0 ]]; then echo "Success" else echo "Failure" fi
或者结合简洁写法:
if grunt build > /dev/null 2>&1; then echo "Success" else echo "Failure" fi
可选:保留错误输出以便调试
如果希望成功时静默,失败时显示错误信息方便排查,可以只重定向标准输出,保留标准错误:
if grunt build > /dev/null; then echo "Success" else echo "Failure: 错误信息如下:" # 此时Grunt的错误日志已经输出到终端了 fi
内容的提问来源于stack exchange,提问作者Chris at Keddy Digital
相关产品推荐
相关产品推荐

