我希望监视给定的目录,直到某个条件出现为止。
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循环都将继续。那么,退出循环并将输出传递给变量的最佳方法是什么?
编辑
用break替换kill -2 $$似乎只会触发一个继续。更糟糕的是--有时候,休息会很好--但很少。
发布于 2015-07-07 09:00:51
试一试:kill -2 -$$或kill -SIGINT -$$
-$$中的减号向组中的所有进程发送信号。$$是当前进程。因此,-$$应该意味着:将此信号发送到当前进程组中的所有进程。
这个手册页解释了更多信息:http://linux.die.net/man/1/kill
发布于 2014-05-19 18:40:28
我现在通过发出信号来做到这一点:
trap "exit 0" 10
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"
kill 10 $$
fi
done)似乎shell不允许从子shell发送SIGINT,因此我不得不发送另一个信号(SIGUSR1)并捕获它。
https://stackoverflow.com/questions/23722795
复制相似问题