Makefile(この場合はjekyll build relative
)でコマンドの失敗をテストしようとすると、変数$$?
に最後のコマンドの終了コードが含まれているはずです。テストでは、このコードは127で示されています。しかし、変数LAST_EXIT
に割り当てると、次のif文で実行されたコマンドが成功したか失敗したかを確認できます。Makefileの変数に値を割り当てる方法は?
LAST_EXIT
は、以下のコードに示すように、割り当てられている値を受け取らないという問題があります。どのようにこの問題を解決するための任意の提案?
コード:
LAST_EXIT = 0
all:
@echo "Building the website... Running command:"
- jekyll build relative || LAST_EXIT=$$?
- jekyll build relative || echo $$? and $(LAST_EXIT)
ifeq ($(LAST_EXIT), 0)
#echo a message indicating success
出力:あなたのアプローチには二つの問題があります
jekyll build relative || LAST_EXIT=$?
/bin/sh: jekyll: command not found
jekyll build relative || echo $? and 0
/bin/sh: jekyll: command not found
127 and 0
はあなたの助けをありがとう、私はあなたよりも別のシステムを使用していると思います! '/ bin/sh:line 0:[:==:単項演算子が期待されていました] Jekyllがインストールされているかどうかをチェックするスクリプトを書くだけで、この問題を解決しました。 'if ... fi'フォーマットはbashスクリプトでうまく動作しますが、同等性テストを修正する必要がありました。 –