2

特定の条件が発生するまで、特定のディレクトリを監視したい。

ARCHIVE_PATH=$(inotifywait -m -r -q -e close_write -e moved_to --format '%w%f' /test | while read FILE; do
  # ... Code ...
  if [ $CONDITION ]; then
    echo "$VALUE"
    break
  fi
done)

breakこれで、またはのどちらを使用してもexit 0、while ループは続行されます。では、ループを終了して出力を変数に渡す最良の方法は何ですか?

編集

で置き換えるbreakkill -2 $$、続行がトリガーされるだけのようです。さらに悪いことに、ブレークが正常に機能する場合もありますが、めったにありません。

4

2 に答える 2

1

これを試してください:kill -2 -$$またはkill -SIGINT -$$

マイナス記号を -$$入力すると、グループ内のすべてのプロセスにシグナルが送信されます。が現在の$$プロセスです。つまり-$$、現在のプロセスのグループ内のすべてのプロセスにこのシグナルを送信します。

このマニュアルページで詳細が説明されています: http://linux.die.net/man/1/kill

答えはhttps://bbs.archlinux.org/viewtopic.php?id=186989からインスピレーションを得ました

于 2015-07-07T09:00:51.687 に答える