由于您正在检查gsort
可执行文件是否存在,因此您可以使用which
or type
shell 命令,例如:
all: foo
:
foo:
which gsort || exit 1
# or
type gsort || exit 1
您不需要错误消息,因为它会自动打印:
/bin/sh:第 0 行:类型gsort
::未找到
这是显而易见的。
或者使用test
或[
(参见:help test
/help [
语法),例如
test -x /opt/local/bin/gsort || { echo Error msg; exit 1; }
它检查给定文件是否存在并且它是可执行的,否则显示消息并退出。括号对于通过对命令进行分组来覆盖运算符的正常优先级(从左到右)很重要(有关详细信息,请参阅Compound Commands
中的部分man bash
)。
另一种方法是使用规则的目标来检查文件是否存在并添加为依赖项all
,例如
all: /opt/local/bin/gsort
@echo Success.
/opt/local/bin/gsort:
@echo "GNU sort does not exist! Exiting..."
exit 1
结果:
$ make
GNU sort does not exist! Exiting...
exit 1
make: *** [/opt/local/bin/gsort] Error 1