我有一个验证函数,我想在验证失败时抛出错误。这是我使用的代码:
define validate
if [ condition... ]; then \
echo "ERROR"; \
$(error Validation failed); \
fi; \
echo "NOERROR";
endef
我遇到的问题是,即使条件为假,错误仍然会被抛出。当我删除错误并运行该函数时,我可以看到没有显示回声“错误”。
为什么会这样?
答案 0 :(得分:1)
那是因为 $(error)
是一个 make
函数,并且在将所有此语句传递给 shell 之前对其进行评估。如果您想从 shell 失败,只需使用 exit 1
。