Linux Inotifywait在while循环中无法按预期工作

Linux Inotifywait在while循环中无法按预期工作,linux,bash,shell,command-line,inotifywait,Linux,Bash,Shell,Command Line,Inotifywait,我想在监控目录中运行number of modify选项,并在3 modify事件发生时运行。我想运行一个命令 我已经尝试了如下所示的代码,但是计数变量并没有增加,即使发生了修改事件 #!/bin/bash count=0 while : do { inotifywait -m -q -e modify /home/testDir& let count="$count + 1"; } || exit 1 if [ "$count"

我想在监控目录中运行number of modify选项,并在3 modify事件发生时运行。我想运行一个命令

我已经尝试了如下所示的代码,但是计数变量并没有增加,即使发生了修改事件

#!/bin/bash
count=0
while :
do
    { inotifywait -m -q -e modify /home/testDir& let count="$count + 1"; } || exit 1
    if [ "$count" -eq "3" ]; then
        #Do something
        count=-250
    fi
done

问题在
let
语句中。您可以将其替换为:

let "count=count+1";

这也很有用

您的脚本和
inotify
使用中存在一些问题:

inotifywait-m-q-e modify
-m
:在不退出的情况下进行监视,因此它永远不会退出,也永远不会打印任何内容
-q
:不会打印任何内容
-e
:修改
事件不适用于目录,但适用于其中的文件

{inotifywait-m-q-e modify/home/testDir&let count=“$count+1”}| |退出1
将在后台启动
inotifywait
,立即添加1进行计数并继续

let count=“$count+1
:非常过时。请改用
count=$((count+1))

固定版本:

!/usr/bin/env sh
计数=0
当:;做
{
inotifywait-qe'modify'/home/lea/t/testDir | |退出1
}>/dev/null 2>&1
计数=$((计数+1))
如果[“$count”-等式“3”];则
回声“做点什么”
计数=-250
fi
完成

谢谢您的精彩回答,它可以正常工作。但是,我想在
计数
等于3时终止特定进程。但是,当我使用kill命令终止进程时,它不会立即终止。您认为
inotifywait
的速度不够快,无法在
修改后立即终止进程吗
动作发生了。取决于达到3后要终止的进程。你的意思是打破while循环吗?如果是这样,只要使用
If[“$count”-eq“3”];然后..根据足够快的速度(“立即”)打破
@kkk001几乎从来都不安全。即使你现在让它工作起来,它也可能会随机失败,通常是当一些看似无关的事情发生变化时。标准术语是,它基本上被认为是一个bug,一个你真的应该以不同的方式做事的标志。