[解決済み】MakefileのターゲットでBash構文を使用するにはどうすればいいですか?
2022-04-02 20:36:49
質問
私はよく
バッシュ
のような処理置換は、非常に便利です。
diff <(sort file1) <(sort file2)
.
このようなBashコマンドをMakefileで使用することは可能でしょうか?こんなのを考えているのですが。
file-differences:
diff <(sort file1) <(sort file2) > $@
私のGNU Make 3.80では、これはエラーになります。
shell
の代わりに
bash
でコマンドを実行します。
解決方法は?
GNU Makeのドキュメントより。
5.3.1 Choosing the Shell
------------------------
The program used as the shell is taken from the variable `SHELL'. If
this variable is not set in your makefile, the program `/bin/sh' is
used as the shell.
ということで
SHELL := /bin/bash
をmakefileの先頭に書けばOKです。
ちなみに、少なくともGNU Makeでは、1つのターゲットに対してこれを行うこともできます。各ターゲットは、このように独自の変数割り当てを持つことができます。
all: a b
a:
@echo "a is $$0"
b: SHELL:=/bin/bash # HERE: this is setting the shell for b only
b:
@echo "b is $$0"
これで印刷されるよ。
a is /bin/sh
b is /bin/bash
詳しくは、ドキュメントの "ターゲット固有の変数値" をご覧ください。この行は Makefile のどこに書いてもよく、ターゲットの直前である必要はありません。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのif条件で「unary operator expected」エラーが発生する。
-
[解決済み] 部分的にコピーされたファイルでscpを再開する方法は?[クローズド]です。
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] echoコマンドでパイピングが効かない [重複]。
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
[解決済み] cygwin の ssh が終了時に "Killed by signal 1" と表示される
-
[解決済み] findコマンドと一緒に使用するとエラー 'rm: missing operand' が発生する。
-
[解決済み】ルール実行時にmake変数を定義する。
-
[解決済み] makefile での複数行の bash コマンド