![コマンドが存在しない場合のコマンドのインストール [閉じる]](https://linux33.com/image/8474/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
私はこれをMakefile
。
ARG_2 := $(word 2, $(MAKECMDGOALS))
command_exist=command -v $(1) >/dev/null 2>&1
command_not_exist=! command -v $(1) >/dev/null 2>&1
npmig:
$(call command_not_exist,npm) && echo 'npm is not installed'
$(call command_not_exist,ied) && npm install ied
$(call command_not_exist,$(ARG_2)) && ied install $(ARG_2) -g
一般的なアイデアは、このようなことを実行でき、make npmig json
インストールnpm
されていないと実際のエラーが発生することです。インストールされていない場合はインストールされ、最終的ied
にインストールされied
ますjson
。
- 最初の行以降に
npm
チェックが失敗すると、プロセスは終了します。 ied
すでにインストールしているか(希望的に)インストールしても、2番目のインストール後にインストールする必要があります。json
3番目のアイテムは、すでにインストールされているか(希望的に)インストールされている場合でも、後でインストールする必要があります。
これはうまくいきません。コマンドが存在することを確認するコードはエラーを生成し、レシピ全体が終了します。私が望むときに終了し、必要なときに続くようにこのレシピの流れを制御する方法が必要です。