プロファイルに本番モードではないとマークされている場合にのみ警告を発するか、スクリプトを実行してください。

プロファイルに本番モードではないとマークされている場合にのみ警告を発するか、スクリプトを実行してください。

特定のスクリプト(例:)を実行して、開発中のソフトウェアをテストしたいと思いますscript file.ext。しかし、設定ファイル(例:)file.confに、システムが本番モードであることを示す特定の文字列(#が付いたコメントではない)が含まれていると、スクリプトを実行できないと言われました。

Bashでどうすれば次のことができますか?

file1.conf文字列が含まれていin productionて、文字列が次の形式ではない場合にsomething ... # something in production something実行されますscript file1.ext

in productionまたは、指定されたファイルにコメントの代わりに文字列が含まれるたびに何らかの警告を受け取ることができますか?

私の考えでは、このコマンドを何とか使用する必要があると思いますinotifywait。ファイルを確認するだけでなく、file1.conf拡張子を持つファイルが本番モードになっていることを示すたびに.conf警告を出すスクリプトがあればよいでしょう。

答え1

これを達成する1つの方法はを使用することですgrep

grep "^[^#]* in production " file.conf || script file.ext

||次のセクションは、前のセクションが存在せず、終了コードが0の場合と終了コードが0のモード(最初の引数)が見つかった場合にのみgrep実行されます。

私はシンプルなパターンを選びました"^[^#]* in production "。この文字は^行の始まりを表し、任意の[^#]文字を表すことができますが、#数量子*表現には任意の数の文字を含めることができます。スキーマの残りの部分は、本番スキーマにラベルを付けたいテキストです。

すべての出力を生成したくない場合は、grep次のように送信できます/dev/null

grep "^[^#]* in production " file.conf > /dev/null || script file.ext

本番モードでスクリプトが実行されていない場合、メッセージを印刷するには、次のようにします。

grep "^[^#]* in production " file.conf > /dev/null && \
    echo "We are in production mode. The script was not run." || \
    script file.ext

関連情報