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
淹没了调试日志,我想重构它
IIUCinotifywait
仅监视目录
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