我正在创建一个makefile而且我正在处理一个没有依赖项的目标,它检查当前目录中是否存在名为README的文件,如果存在,请使用less来读取它,否则就退出:no no任何错误 - 如果是这种情况,运行目标的命令应该不会打印到控制台。
我尝试了几种不同的方式,但似乎没有任何效果(PAGER只是一个等于更少的var):
read :
ifneq ("$(wildcard README)","")
-@$(PAGER) README
endif
还有这段代码
read :
-@for file in *;\
do \
if [ ${file} == "README" ]; then\
$(PAGER) "README" ;\
fi;\
done
对于第一个块,我不断得到类似于/ bin / sh的错误:语法错误:单词意外(期待“)”)并且对于我的生活我只是不明白它的意思。我当然不认为有语法错误,也许我误用make。
对于后一个代码,我得到了==。
的意外操作符错误我也尝试过这样简单的事情,比如这两个单线程解决方案,但也会遇到类似的错误:
-@test -a README && less README
-@[ -a README ] && less README
非常感谢任何帮助。
编辑:我正在进一步挖掘并看到一些有希望的东西并明确地将我的shell设置为/ bin / bash(SHELL:= / bin / bash)但没有骰子。答案 0 :(得分:1)
您应该尝试在单独的* .sh文件中提取shell代码,以便可以在makefile中将它们指定为命令(并确保* .sh文件是可执行的)。
答案 1 :(得分:1)
read:
@if [ -e README ]; then less README; fi