bash - 在 Makefile 中回显退出代码
问题描述
我已经检查了一些关于 SO 的帖子,但无法得到我想要的答案。
我想将 Stata 脚本作为 Makefile 的一部分运行。所以在我的一个目标中,我定义
live_data:
@echo "Executing Stata code"
StataIC -e 'stata_code.do'
@exit_status=$?
@echo "Finished execution of Stata code."
@echo Code finished with exit code of $(exit_status)
但是,每当我查看make all
命令的输出(包括live_data
)时,我都会看到
Executing Stata code
StataIC -e stata_code.do'
Finished execution of Stata code.
Code finished with exit code of
基本上,该变量exit_code
始终为空。
但是,如果我弹出一个终端并简单地运行and ,我会StataIC -e stata_code.do
得到正确的结果(0 或 1)。有人可以指出我在这里缺少什么吗?exit_status=$?
echo $exit_status
解决方案
请注意,您可以简化配方,这样您就不需要保存$?
.
live_data:
@echo "Executing Stata code"; \
StataIC -e 'stata_code.do'; \
printf '%s\n' "Finished execution of Stata code." \
"Code finished with exit code of $$?"
printf
在这里,两个字符串都是在 之后立即调用的单个字符串的参数StataIC
,因此$?
正确地引用了 的退出状态StataIC
。
推荐阅读
- c# - SolidColorBrush 颜色绑定问题
- javascript - 只有循环的最后一次迭代成功注册了我的点击事件?
- python - 想要从我的函数返回的素数列表但只获得第一个值?
- javascript - 根据现有功能禁用/启用 HTML 按钮
- formatting - Azure 数据工厂:使用逗号而不是点作为小数分隔符读取双精度
- css - 当 src: local() 包含在 @font-face 定义中时,Material Design 图标无法正确呈现
- powershell - 获取 SharePoint Online 存储分配/利用
- r - 如何为某些单词在列中出现的次数创建直方图?
- google-maps - 如何批量向谷歌地图贡献图片?
- bash - Bash - 打印可被 8 整除的第一个可用(不在数组中)数字