Makefileでifする時のささいな話
こんな感じでMakefileを書くと、any_fileが無い時にmakeがエラーになる。
$ cat Makefile
all:
[ -e any_file ] && echo "file exists"
$ make
[ -e any_file ] && echo "file exists"
make: *** [all] Error 1
[]が何返してるのか見るとこんな感じ。
$ touch any_file $ [ -e any_file ] $ echo $? $ 0 $ rm any_file $ [ -e any_file ] $ echo $? $ 1
なので&&じゃなくて条件反転して||で書いたらOKでしたっていうお話。