用于检查(或等待)目录中文件可用性的脚本错误

用于检查(或等待)目录中文件可用性的脚本错误

我想编写一个 shell 脚本来检查触发器文件在我的目录中是否可用。如果不可用,我希望代码等待,例如 1 小时,然后再次检查可用性,直到找到。一旦找到,脚本应该成功完成。

触发器文件名有一个常量部分,然后是一个可变日期时间部分。例如 Transfer-20210813061635681177,其中 Transfer- 是恒定的,休息每天都在变化。

下面是我尝试过的,我把它放在 Test.ksh 文件中,并尝试通过在 unix 服务器命令行上给出 ksh Test.ksh 来执行:

#!/bin/ksh  
if [ ! -f /data/source/Transfer-* ] ; then  
   sleep 3600  # wait 60 minutes  
fi  
[ -f /data/source/Transfer-* ]  && echo 'trigger found' || echo 'trigger not found'  
exit 0

它给出以下错误:

Test.ksh:第 6 行:第 6 行语法错误:'if' 不匹配

我在这里可能做错了什么?或者如何进一步即兴发挥和纠正这一点。请求帮助。

答案1

该示例展示了脚本如何正常运行,从而强化了 @steeldriver + @UnixBeginner 的想法,即存在一些格式问题。进行更改后,出于测试目的,将 3600 秒缩短至 3 秒。

$ cat x2
#!/bin/ksh
if [ ! -f /data/source/Transfer-* ] ; then
   sleep 3  # wait 60 minutes
fi
[ -f /data/source/Transfer-* ]  && echo 'trigger found' || echo 'trigger not found'
exit 0
$ ./x2
trigger not found
$

相关内容