我是一名 Bash 脚本新手,在 Google 上搜索此场景大约六个小时,但无果。我找到了部分所需内容,但没有找到全面的解决方案。
问题如下:我需要编写一些代码来检查 3 个文件是否存在(file1.txt
、file2.csv
和file3.log
)。但在继续之前,我需要确认file3.log
已停止写入(这是为了确认创建 3 个文件的脚本已成功完成)。
检查这些文件是否存在似乎很容易,使用如下方法:
if [ -f -e /path/to/file/file1.txt && /path/to/file/file2.csv && /path/to/file/file3.log]
then
# somehow check the exit status of file3.log
if [$? !=0]
#somehow loop (maybe every 5 minutes) until $?=0
done
或者
我也在想,我是否可以避免所有这些,只检查初始脚本的退出状态?但我不确定,因为如果发生某种故障并且文件没有创建,那么这将是一个严重的问题,因为扫描过程的下一部分大约需要 2 天时间......
抱歉,如果这可能看起来像一个愚蠢的问题,我已经深陷谷歌“if-until-exit-zero-else...”的泥潭,不知道接下来该做什么。
答案1
要检查命名的程序或脚本是否已完成,请使用以下命令:
wait $(pgrep program-name)