我有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
,因为第二集[frnfs7835.txt
,{{1}中缺少文件frcrg7835.txt
即使设置3 [frits7835.txt
,frcrg7836.txt
,frits7836.txt
]可用,脚本应该停在那里。
在上面的场景中,如果缺少任何7834文件,则不应加载任何文件。
答案 0 :(得分:1)
正如你所说,这三个文件都可能丢失,你必须定义你期望的集合 - 在这种情况下作为参数传递给脚本:
#!/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
答案 1 :(得分:0)
您可以使用break
命令退出循环。
您可以使用exit
命令退出脚本。
这两种方法都是停止处理的合理方式 - 这更好地取决于上下文(例如,是否有清理工作要做)。确保您正确报告错误,以便人们知道脚本不再处理任何内容的原因。