我想编写一个 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
$