私は次の条件文をaで使用しますMakefile
。
mytarget:
if [ -z "${TAG1}" | -z "${TAG2}" | -z "${TAG3}" ]
then
echo "Need to set all tag names images
exit 1
fi
しかし...
$ make mytarget TAG1=latest TAG2=latest TAG3=latest
if [ -z "latest" | -z "latest" | -z "latest" ]
/bin/bash: -c: line 1: syntax error: unexpected end of file
Makefile:36: recipe for target 'env' failed
make: *** [env] Error 1
答え1
すべての(最後の)コマンドラインの最後にはバックスラッシュが必要です。
make
次のコマンドを使用して、各コマンドラインを別々のシェルに送信します。/bin/sh -ce "cmdline"
シェルには改行文字がなくなり、backslash newline
一部のコマンドの前にセミコロンを追加する必要があります。
target:
if true; \
then \
echo true;\
fi
バックスラッシュを使用すると、make
これらのダミー行はすべて次に変換されます。
if true; then echo true; fi
に送信する前に/bin/sh -ce cmd
。