Linux 如何替换`直到。。在特定创建的文件上使用'inotifywait'睡眠?

Linux 如何替换`直到。。在特定创建的文件上使用'inotifywait'睡眠?,linux,shell,inotify,Linux,Shell,Inotify,我有这样的代码来触发脚本: 当使用set-x进行调试时,由于sleep淹没了调试日志,我想重构它 IIUCinotifywait仅监视目录 inotifywait -e create /tmp 那么,我如何使其仅在看到/tmp/updates.pipe文件的创建事件后才能继续,而不是/tmp中的任何其他文件?类似的内容如何: while read OUTPUT do if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break;

我有这样的代码来触发脚本:

当使用
set-x
进行调试时,由于
sleep
淹没了调试日志,我想重构它

IIUC
inotifywait
仅监视目录

inotifywait -e create /tmp

那么,我如何使其仅在看到/tmp/updates.pipe文件的创建事件后才能继续,而不是
/tmp
中的任何其他文件?

类似的内容如何:

while read OUTPUT
do
    if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break; fi
done < <(inotifywait -qm -e create /tmp)

但是由于一些神秘的原因,它只有在创建更新后的下一次输出后才会中断。管道,有人知道为什么吗?

这样的东西怎么样:

while read OUTPUT
do
    if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break; fi
done < <(inotifywait -qm -e create /tmp)

但是由于一些神秘的原因,它只有在创建更新后的下一次输出后才会中断。管道,有人知道为什么吗?

grep的quiet标志会使它在看到匹配后立即中断。以下内容应该在bash下工作


grep-q updates.pipegrep的quiet标志会使它在看到匹配时立即中断。以下内容应该在bash下工作


grep-q updates.pipe@hendry我不知道是否有一个不产生子shell的好解决方案。哦,第二段代码没有“第二次出现”bug。美好的不确定是否有必要保留不起作用的第一个区块?@hendry第一个版本应该适用于所有shell,我只是不知道为什么它不会立即中断。好吧,它不想接受第一个区块的答案,因为它不会立即中断这一事实有点破坏交易。我切换了两个解决方案。如果有更好的解决方案,您可能仍然会等待。@hendry我不知道是否有一个不产生子shell的好解决方案。哦,第二块代码没有“第二次出现”错误。美好的不确定是否有必要保留不起作用的第一个区块?@hendry第一个版本应该适用于所有shell,我只是不知道为什么它不会立即中断。好吧,它不想接受第一个区块的答案,因为它不会立即中断这一事实有点破坏交易。我切换了两个解决方案。如果有更好的解决方案,您可能仍在等待。
inotifywait -qm -e create /tmp | while read OUTPUT
do
    if echo $OUTPUT | grep -q "CREATE updates.pipe"; then break; fi
done