Linux设置while循环超时退出,离开while循环在Linux环境中的BASH脚本中执行下一个命令...

我希望你们一切顺利!我试图每隔一段时间轮询一次目录,直到数据完成进入目录,并且完成后,我想在Linux环境中使用bash脚本在目录上执行我的下一个任务。我无法访问inotify-tools。我测试这个过程的方法是通过键入以下到一个shell命令行:离开while循环在Linux环境中的BASH脚本中执行下一个命令

while true; do touch /home/tmp/fun_temp/nothing.txt; sleep 10; rm -rf /home/tmp/fun_temp/nothing.txt; done

这就造成了所谓的nothing.txt一个临时目录中的文件,然后睡10秒钟,然后删除它,然后做它直到我告诉它停止。我的bash脚本以20秒的间隔观看目录,然后在20秒钟将目录信息写入名为old_stat.txt的文件中。然后再过20秒后,它将new_stat与旧统计数据进行比较,如果它们相等,则应该退出循环并执行命令的下一部分,并且如果它们不等于保持轮询。这里是我的bash脚本:

#!/bin/bash

DIR_TO_CHECK='/home/tmp/fun_temp/'

OLD_STAT_FILE='/home/sleep_files/old_stat.txt'

if [ -e $OLD_STAT_FILE ]; then

OLD_STAT=`cat $OLD_STAT_FILE`

else

OLD_STAT="nothing"

fi

NEW_STAT=`stat -t $DIR_TO_CHECK`

while true; do

if [ "$OLD_STAT" != "$NEW_STAT" ]; then

echo 'Directory is still updating.'

sleep 20

echo $NEW_STAT > $OLD_STAT_FILE

echo 'Checking again.'

elif [ "$OLD_STAT" == "$NEW_STAT" ]; then

echo 'Directory is done updating. Move on.'

exit 0

fi

done

我现在使用0号出口作为支票。我通过在命令行中运行上面的while循环来测试bash脚本,然后在另一个shell中运行这个bash脚本,然后给它一分钟以确保目录已更改,然后在命令中终止while循环行,让bash脚本运行另一分钟,但它永远不会改变到第二个条件并离开循环,除非我杀死脚本并再次运行它。任何帮助将是伟大的,谢谢!

+0

你的循环变化目录'/家庭/ MYHOME/tmp',脚本检查'/家庭的/ tmp/fun_tmp'。 –

+0

@Barmar在撰写本文时这是我的疏忽,在我的脚本中是正确的。 –

+1

调试shell脚本的最好方法是在开头放置'set -x'。然后它会显示每个命令执行时的变量,并展开变量。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值