Linux Bash脚本等待多文件存在问题排查及跨目录咨询
问题分析与修正方案
原脚本的错误点
- 变量赋值语法错误:Bash变量赋值时,
=前后不能有空格,原代码TMP_TRG_FILE = 'f1 f2 f3'会被解析为执行TMP_TRG_FILE命令,直接导致后续逻辑全部异常。 - 循环输入方式错误:
done < $TMP_TRG_FILE试图读取名为f1 f2 f3的文件(而非读取字符串内容),不符合需求逻辑。 - 错误使用
print命令:Bash中没有print命令,应替换为echo。
修正后的脚本
touch TESTING12 # 用数组存储目标文件,处理多文件场景更稳定 TRIGGER_FILES=('f1' 'f2' 'f3') for trigger_file in "${TRIGGER_FILES[@]}" do while [[ ! -e "$trigger_file" ]] do echo "Waiting for trigger file: $trigger_file" sleep 5 done done touch TESTING34
关于跨目录文件等待的问题
完全可以等待其他目录下的文件,只需在数组中填写正确的相对路径或绝对路径即可。示例如下:
TRIGGER_FILES=( '../dir1/f1' '../dir2/f2' '../dir3/f3' )
脚本会自动根据路径判断文件是否存在,逻辑和等待当前目录文件完全一致。
内容的提问来源于stack exchange,提问作者Mr T.
相关产品推荐
相关产品推荐

