2

watch.shという基本的なinotifywaitスクリプトと、同じディレクトリに.stylで終わるファイルがいくつかあります。これが変更をキャッチするスクリプトですが、do/done内でコードを実行しません

私はそれを次のように初期化し、これsh watch.shがスクリプトです

#!/bin/sh

while inotifywait -m -o ./log.txt -e modify ./*.styl; do
  stylus -c %f
done

echo "hi"exec部分に入れてみましたが、何も実行されません

4

2 に答える 2

4

あなたが抱えている問題は、の-mオプションにありますinotifywait。これにより、コマンドは終了しません。コマンドの終了ステータスをチェックするためwhile、ループの実行を続行するには、コマンドを終了する必要があります。

-mマンページからの説明は次のとおりです。

Instead of exiting  after  receiving  a  single  event,  execute
indefinitely.   The default behaviour is to exit after the first
event occurs.

-mオプションを削除すると、問題が解決するはずです。

while inotifywait -o ./log.txt -e modify ./*.styl; do
  stylus -c %f
done
于 2012-09-06T21:48:43.180 に答える
0

これを試して:

while K=`inotifywait -o ./log.txt --format %f -e modify ./*.styl`; 
do 
   stylus -c $K;
done
于 2014-10-20T14:02:49.233 に答える