私はPythonスクリプトをリファクタリングするときに、わざわざ仕事を自動化するためにMakefile(LinuxではGNU makeを使っている)を使います。 スクリプトは出力ファイルを作成します。私は、出力ファイルが私のリファクタリングに直面しても変わらないことを確認したいと思います。makeのシェルステータスコード
しかし、コマンドのステータスコードを取得して、後続のシェルifコマンドに影響を及ぼす方法が見つかりませんでした。
次のルールは、問題を示す:
check-cond-codes:
diff report2008_4.csv report2008_4.csv-save-for-regression-testing; echo no differences: =$$!=
diff -q poalim report2008_4.csv; echo differences: =$$!=
最初の「差分」は二つの等しいファイルを比較し、2つ目は、2つの異なるファイルを比較します。 出力は次のようになります。
diff report2008_4.csv report2008_4.csv-save-for-regression-testing; echo no differences: =$!=
no differences: ==
diff -q poalim report2008_4.csv; echo differences: =$!=
Files poalim and report2008_4.csv differ
differences: ==
だから、明らかに '$$!' 'diff'のステータスコードをキャプチャする間違った変数です。 SHELL:=/bin/bash をMakefileの先頭に使っても問題は解決しませんでした。
実際のルールの 'if'コマンドで、必要な値を返す変数(もしあれば)が使用されます。
すべてのコマンドをMakefileにインラインで書き込む代わりに小さなアドホックシェルスクリプトを作成する代わりに、これは望ましくないことですが、私は最後の手段として使用します。
関連:
私は '$$'あなたが提供されたリンクには約何かを見つけることができません!。 URLを変更して、4番目の答えの下にある 'share'リンクを使って'プロセス終了コードに基づく出口シェルスクリプトの4番目の答え 'を直接指し示すことができますか?ポジション – SebMa