シェルスクリプトビルドシステム

シェルスクリプトビルドシステム

私の仕事には、サーバーファームで実行されているOracleデータベースを一覧表示するBashスクリプトがあります。インラインPythonコード(例:)を使用して少し修正しましたpython -c "import sys..."

大幅に成長したので、スクリプトを使用するビルドシステムを検討するようになりました。理想的には、ビルドシステムを使用すると、Pythonコードを別々のファイルに書き込んでから、それらをすべて1つの統合スクリプトに入れることができます。統合スクリプトは展開プロセスを簡素化するのに役立ちます。

さらに、ビルドシステムはスクリプトサイズを減らすためにすべてのコメントを削除する必要がありますが、これはおそらく最も簡単な部分です。

そうでない場合は、時間をかけて自分で作成します。汎用ビルドツール(言語に拘束されない)があっても、それを使いたいと思っています。

ベストアンサー1

この質問に答えるのは間違っているようですが、次のようにすることができます。

要点は、Makefileが操作に適したツールであり、ここで文字列構文を使用してシェルエスケープを削除できることです。

デフォルトのscript.sh

# some script...

xargs -0 python -c <<'PYTHON_SCRIPT_asdlfkjhsldjkhf'
PYTHON_SCRIPT_asdlfkjhsldjkhf

# more script ...

ファイルの生成

merged_script.sh: base_script.sh python_script.py
    { sed -ne '0,/PYTHON_SCRIPT_/p' base_script.sh; \
      sed -e SOME_REGEX_TO_STRIP_COMMENTS python_script.py; \
      sed -ne '/^PYTHON_SCRIPT_/,999999999p' base_script.sh; \
    } > merged_script.sh

デフォルトでは、シェルスクリプトの前半を取得し、Pythonスクリプトをリンクしてスクリプトの後半を追加します。 Pythonスクリプトはここの文字列に配置されているので、シェルエスケープについて心配する必要はありません。文字列がPythonコードに表示されないことを確認する必要がありますが、これは実際の問題ではありません。また、Pythonスクリプトを最大引数制限より短くする必要がありますが、すでに問題があります。

Pythonのコメントを削除するための正規表現を書くことは練習のままです。

スクリプトの上部と下部をキャッチするためのsedコマンドは混乱しており、ファイルをリンクするために他の実用的なスクリプトに置き換えることができます。私はそれをPythonで書くことをお勧めします。それはあなたが好きなものだからです。

おすすめ記事