gpt4 book ai didi

bash - Makefile:有条件退出

转载 作者:行者123 更新时间:2023-11-29 09:26:56 28 4
gpt4 key购买 nike

我想在 Makefile 中执行某些代码之前检查是否设置了环境变量。如果未设置,我想通过简单的错误消息抛出错误:

run:
[ -z "$(MY_APP)" ] && echo "MY_APP must be set" && exit 1
echo "MY_APP is set. Yay!"
echo "Let's continue on with the command..."

MY_APP 未设置时,我收到以下错误,这是我希望的:

[ -z "" ] && echo "MY_APP must be set" && exit 1
MY_APP must be set
make: *** [run] Error 1

但是,当 MY_APP 被设置时,我得到以下错误:

[ -z "EXAMPLE_NAME" ] && echo "MY_APP must be set" && exit 1
make: *** [run] Error 1

知道我做错了什么吗?有没有更好的方法来做到这一点?

最佳答案

回想一下,&& 条件要求所有条件都必须为 TRUE 才能通过。由于第一个条件失败,整个命令将返回状态 1 (-> false),有效地停止 make

您可以使用以下内容,这样只有在缺少MY_APP 时测试才会失败。

请注意,我使用的是 false 而不是 exit 1。也最好使用 "${MY_APP}",这样可以更轻松地从 Make 复制/粘贴到 shell 提示符/脚本。

run:
{ [ -z "$(MY_APP)" ] && echo "MY_APP must be set" && false } || true
...

# Or just if-Then-Else
if [ -z "${MY_APP}" ] ; then echo "MY_APP must be set" ; false ; fi
...

关于bash - Makefile:有条件退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603062/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com