gpt4 book ai didi

makefile - 测试 makefile 目标中是否存在文件,如果不存在则退出

转载 作者:行者123 更新时间:2023-12-03 10:20:40 24 4
gpt4 key购买 nike

如果文件不存在,有没有办法以错误条件退出?我目前正在做这样的事情:

all: foo

foo:
test -s /opt/local/bin/gsort || echo "GNU sort does not exist! Exiting..." && exit

运行 make运行 all目标,运行 foo .

期望是,如果 test -s条件失败,则 echo/exit语句被执行。

但是,即使 /usr/bin/gsort存在,我得到 echo 的结果声明但 exit命令不运行。这与我希望完成的事情相反。

执行上述操作的正确方法是什么?

最佳答案

exit 单独返回最后执行的命令的状态。在这种情况下,它返回零,这意味着一切正常。

这是因为 ||&&equal precedence , 并且 shell 将命令解释为好像它是写的

( test ... || echo ... ) && exit

如果要发出失败信号,则必须以非零值退出,例如 exit 1 .
如果你想回显并退出,只需将命令按顺序排列,以 ; 分隔。
all: foo

foo:
test -s /opt/local/bin/gsort || { echo "GNU sort does not exist! Exiting..."; exit 1; }

关于makefile - 测试 makefile 目标中是否存在文件,如果不存在则退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348741/

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