У меня есть 2 скрипта. Во-первых, start.sh
имеет следующие строки:Как заставить скрипт работать с разными файлами?
echo "-----------RUN copy mta-------------"
bash copy_file.sh mta $today_without_dash
echo "-----------RUN copy rcr-------------"
bash copy_file.sh rcr $today_without_dash
echo "-----------RUN copy sub-------------"
bash copy_file.sh sub $today_without_dash
Который начинается copy_file.sh
:
echo "remove old files "${1}
hadoop fs -rm -skipTrash /apps/hive/warehouse/database.db/project/file_${1}/*
for i in `hadoop fs -ls /user/files/${2}_C | egrep ${1}.gz | awk -F " " '{print $8}'`
do
hadoop fs -cp $i /apps/hive/warehouse/database.db/project/file_${1}
echo "copy file - "${i}
done
for i in `hadoop fs -ls /user/files/${2}_B | egrep ${1}.gz | awk -F " " '{print $8}'`
do
hadoop fs -cp $i /apps/hive/warehouse/database.db/project/file_${1}
echo "copy file - "${i}
done
Проблема заключается в том, у меня есть много этих ${2}_C
типа папок, что каждый конец с другой буквой. Как ${2}_P
, ${2}_F
, ${2}_L
и так далее. Я задавался вопросом, есть ли способ перебирать каждую папку в одном цикле, вместо того чтобы писать цикл для каждой папки. Потому что код становится слишком громоздким.