inotifywaitを使用してフォルダを観察し、ファイルが見つかったらそのファイルに対してスクリプトを実行します。

inotifywaitを使用してフォルダを観察し、ファイルが見つかったらそのファイルに対してスクリプトを実行します。

誰かが私を助けることを願っています。フォルダ内のファイルを指している場合は、同じフォルダにJSONファイルを生成するスクリプトを使用しています。以下は、現在実行中のスクリプトをファイルごとに実行するために使用されるコマンドです。

bash /path/to/script/PageBuilder.sh "/path/to/file/cvinfo"

inotifywaitサブディレクトリをスキャンし、各ファイルをcvinfo見つけてそのファイルからスクリプトを実行したいと思います。

これまで運なく試したことは次のとおりです。

psttern="cvinfo"
inotifywait -m -r -e close_write --format %w%f /mnt/m/Comics/ | while read FILENAME; do
  if [[ "$FILENAME" == *${pattern}* ]]; then
    bash /mnt/m/PageBuilder/PageBuilder.sh "$FILENAME";
  fi
done&

現在、これは監視のみを設定し、cvinfoファイルをフォルダの内外に移動または編集するなどの場合でも何もしません。

このすべてについての私の知識は、私たちの友人であるGoogleから来たものなので、私はそれがどのように機能するかについて非常に基本的なものだけを理解しています。役に立つ他の投稿を探しましたが、どちらも私の問題を解決できませんでした。

Windowsを使用していますが、BASH端末で実行しています。

ベストアンサー1

関連トピックを調査中に偶然発見した内容です...古い投稿であることはわかりますが、シェル変数に(psttern代わりに)タイプミスを作成したようですpattern

私は自分でテストしないでどのように失敗するかを知るほど専門家ではありませんが、静かに失敗する可能性があります(そして変数が初期化されていない可能性がある${pattern}ため、どんな場合でもtrueを返します$FILENAME)。

おすすめ記事