特定のスクリプト(例:)を実行して、開発中のソフトウェアをテストしたいと思います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