gpt4 book ai didi

linux - 在不创建额外进程的情况下在脚本中使用 inotifywait -m?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:57 34 4
gpt4 key购买 nike

我不确定这是否可能,但我经常这么想,而且一些解决方案让我感到惊讶。是否可以在不创建两个进程的情况下创建以下脚本的等效项(在这种情况下,很明显创建了两个进程,因为有一个管道):

#!/bin/bash

EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r ~/Desktop/testing | \
while true; do
read TMP
echo "${TMP}" >> ~/Desktop/eventlog
done

请注意,在 while 循环内我确实想要访问该事件。

在我看来,管道是必需的,因为我们需要用一个进程写入并从另一个进程读取。但也许存在一个技巧?

最佳答案

bash 4.2 中,您可以设置 lastpipe 选项以允许 while 循环在当前 shell 中运行,而不是在单独的进程中运行.

shopt -s lastpipe
inotifywait -e "$EVENTS" -m -r ~/Desktop/testing |
while true; do
read TMP
echo "${TMP}" >> ~/Desktop/eventlog
done

(您不需要在 | 之后显式续行,因为 bash 知道一行不能以该字符结束。)

关于linux - 在不创建额外进程的情况下在脚本中使用 inotifywait -m?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277428/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com