【发布时间】:2012-12-30 04:49:47
【问题描述】:
如果文件不存在,有没有办法以错误条件退出?我目前正在做这样的事情:
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 命令不会运行。这与我希望实现的目标相反。
执行上述操作的正确方法是什么?
【问题讨论】:
-
如果我在命令行上尝试此操作,在括号中使用
||的右侧,以获得一个子 shell,使其按预期工作。我不知道它在makefile中是否相同。没有括号,即使测试是肯定的,也会执行“退出”。