我有 3 种类型的文件,它们按以下顺序加载到数据库中:
Shipments - File frcrgxxxx.txt
Invoices - File frnfsxxxx.txt
Invoices Items - File fritsxxxx.txt
其中 xxxx 可以是任何数字,例如:7834
例如,frcrg7834.txt
、frnfs7834.txt
和frits7834.txt
是一个集合。我们每天都有数百个文件。如果集合中的 1、2 或全部 3 个文件丢失,脚本应在此处停止。
假设以下文件位于处理文件夹中:
frcrg7834.txt, frcrg7835.txt, frcrg7836.txt,
frnfs7834.txt, frnfs7836.txt,
frits7834.txt, frits7835.txt, frits7836.txt
只有集合frcrg7834.txt
、frnfs7834.txt
、frits7834.txt
应该加载,因为第二个集合 [frcrg7835.txt
, frits7835.txt
] 中缺少文件frnfs7835.txt
,脚本应该停在那里,即使集合 3 [frcrg7836.txt
、frits7836.txt
、frnfs7836.txt
] 可用。
在上述情况下,如果缺少 7834 文件中的任何一个,则不应加载任何文件。
正如您所说,所有三个文件都可能丢失,您必须定义所需的集合 - 在这种情况下作为参数传递给脚本:
#!/bin/bash
FIRST_SET=$1
LAST_SET=$2
DIR=dir
for set in $(seq $FIRST_SET $LAST_SET)
do
for type in "fcrg" "frnfs" "frits"
do
if [ ! -r $DIR/${type}${set}.txt ]
then
echo "found incomplete set $set - exiting"
exit 2
fi
done
done
# do_something
break
命令退出循环。
您可以使用 exit
命令退出脚本。
两者都是停止处理的合理方法 - 这更好取决于上下文(例如,是否有清理工作要做)。 确保正确报告错误,以便人们知道脚本不再处理任何内容的原因。