だから私は次のコードを持っています:
.PHONY: test
test:
ifeq ($(grep -Fxq "substring" ./file && echo 1 || echo 0), 1)
//do something
else
//do other thing
endif
アイデアは、ファイル内の部分文字列を見つけると何かをすることですが、私の条件は決して機能しません。 subshell コマンドは独立して実行でき、部分文字列が見つかった場合は期待どおりに 1 を返します。これで、makeファイルにbash if式を簡単に入れることができることがわかりましたが、makeファイル自体の条件を使用したいと思います。
どのアイデアが間違っている可能性がありますか?
ベストアンサー1
grep
にはそのような機能はありませんmake
。ただし、関数を使用して外部バイナリを呼び出すことはできますshell
。
.PHONY: test
test:
ifeq ($(shell grep -Fxq "substring" ./file.txt && echo 1 || echo 0), 1)
echo Yes
else
echo No
endif
もう一度覚えておくべきことは、make
レシピ(または機能)を処理するためにbash(またはksh、zsh、any-other-sh)を使用しないでくださいshell
。シェルインタプリタは最も原始的なインタプリタです。sh
具体的には、make
独自のSHELL変数(通常は/ bin / sh)を読みます。