Linux Bash-如何使循环只运行一次?
每当Linux Bash-如何使循环只运行一次?,linux,bash,shell,Linux,Bash,Shell,每当count目录中的文件发生更改时,我需要计算总计数,如果总计数在50到100之间,我需要运行一个带有输入N的脚本,这只需要1秒的时间 问题是当总计数每次从50增加到100时,脚本每次都在执行。有没有办法阻止循环/脚本第二次运行 while inotifywait -r -e modify $dir do line=$(grep -ho '[0-9]*' /var/count* | awk '{sum+=$1} END {print sum}') echo "********** coun
count
目录中的文件发生更改时,我需要计算总计数
,如果总计数
在50到100之间,我需要运行一个带有输入N
的脚本,这只需要1秒的时间
问题是当总计数每次从50增加到100时,脚本每次都在执行。有没有办法阻止循环/脚本第二次运行
while inotifywait -r -e modify $dir
do
line=$(grep -ho '[0-9]*' /var/count* | awk '{sum+=$1} END {print sum}')
echo "********** count is $line **********"
if [ $line -ge 50 ] && [ $line -lt 100 ]
then
echo "_____________executing if 1 _______________"
export N=1
/var/test.sh
fi
if [ $line -ge 100 ] && [ $line -lt 150 ]
then
echo "_____________executing if 2 _______________"
export N=2
/var/test.sh
fi
done
我不知道你为什么有两个“完成”的陈述
我很难理解这个问题。这是你想要的吗?每个“如果”只执行一次
export N=0
while inotifywait -r -e modify $dir
do
line=$(grep -ho '[0-9]*' /var/count* | wc -l)
if [ $N -lt 1 -a $line -ge 50 -a $line -lt 100 ]
then
export N=1
/var/test.sh
elif [ $N -lt 2 -a $line -ge 100 -a $line -lt 150 ]
then
export N=2
/var/test.sh
fi
done
根据您想要的行为调整代码。检查您的变量$N
,查看您是否已经执行了它?我不确定。。如何检查变量$N
as 1是否已执行?OP可能希望在某个地方休眠。“完成仅一次”我修改了代码。非常感谢你!!!你的解决方案对我非常有效。我正在努力控制N美元。再次感谢:)