Я пытаюсь объединить содержимое списка файлов с удаленного сервера в один. Мой код пытался сначала получить список их путей в массив, что я успешно сделал:
day_of_week=`date +%w`
if [[ $day_of_week == 1 ]]; then
look_back=3
else
look_back=1
fi
DATE=$(date -d "$look_back day ago" '+%Y%m%d')
SLAP_PATH="/ns/local/data/internal/SUBM/data/SLAP_376_SUBM1/data/${DATE}/processed/"
FILES=$(ssh -tq myuser@myserver "find ${SLAP_PATH} -type f -name 'subm_*lfj_in.csv'")
Переменная FILES:
/ns/local/data/internal/SUBM/data/SLAP_376_SUBM1/data/20200129/processed/subm_144_lfj_in.csv
/ns/local/data/internal/SUBM/data/SLAP_376_SUBM1/data/20200129/processed/subm_140_lfj_in.csv
/ns/local/data/internal/SUBM/data/SLAP_376_SUBM1/data/20200129/processed/subm_145_lfj_in.csv
(...)
Так что теперь я пытаюсь объединить каждое значение в строковую переменную с именем «CMD», поэтому я могу попытаться использовать что-то вроде:
cat file1 file2 file3... > final_file
Проблема в том, что я не могу создать последовательность имен файлов. Вот мой код:
CMD=""
for ((i = 0; i < ${#FILES[@]}; i++)); do
#remove \n
tmp=`echo ${FILES[$i]} | tr -d '\n'`
#concatenate into $CMD:
CMD="$CMD $tmp"
done
echo "This is CMD: $CMD"
И каждый раз, когда я запускаю свой скрипт, вот что я получаю:
$$ ./exportReconData.sh
/ns/local/data/internal/SUBM/data/SLAP_376_SUBM1/data/20200129/processed/subm_147_lfj_in.csv44_lfj_in.csv
Есть предложения? Может быть, есть гораздо более простой способ сделать это? Спасибо.