Я пишу скрипт для архивирования файлов и загрузки их в определенное место.Передача переменной переменной
У меня возникли проблемы со следующей областью:
while IFS= read -r THELINE; do
Filename=$(awk -F:: '{print $1}' <<< "$THELINE")
Pattern=$(awk -F:: '{print $2}' <<< "$THELINE")
Location=$(awk -F:: '{print $3}' <<< "$THELINE")
dailydate=$startdate
while [[ $dailydate -le $enddate ]]
do
YEAR=${dailydate:0:4}
MONTH=${dailydate:4:2}
DAY=${dailydate:6:2}`
echo $Pattern
dailydate=`/bin/date --date="$dailydate 1 day" +%Y%m%d`
done
done < $FileDetails
Файла $FileDetails
конфигурационного файл, структура и расположение разделенных ::. Я извлекаю их, как показано. Проблема с картины ..
я их в этом формате:
Filename_$YEAR_$MONTH_$DAY.gz
, в конфигурационном файле.
Я также создаю переменные с именем YEAR, MONTH и DAY внутри цикла из переменной даты.
Я надеялся, что переменная «Pattern» будет читать переменные YEAR, MONTH, DAY. Например, когда я эхо $ PATTERN после создания переменных год, месяц, день, я надеялся, что это будет печатать что-то вроде Filename_2015_07_29.gz
В настоящее время он просто печатает NULL.
Прежде всего, это даже возможно? Если да, то как?
Спасибо!
EDIT:
Переменные STARTDATE и EndDate в настоящее время передаются как параметры сценария.
Вот конфигурационный файл шаблона:
Filename::filepattern_${YEAR}_${MONTH}_${DAY}.gz::File/location/some/where
Скрипт читает эту строку, извлекает имя файла, шаблон, расположение в переменные. Затем он разделяет данную дату на год, месяц, день. Наконец, когда я печатаю шаблон, мне бы хотелось увидеть эти значения.
Например: когда dailydate = 20150729 Тогда шаблон должен быть: filepattern_2015_07_29.gz
Идея заключается в том, чтобы перебрать введенный диапазон дат. (Скажем, от 20150507 до 20150707).
@EdMorton конфигурационный файл, как: Имя файла :: FilePattern _ $ {YEAR} _ $ {МЕСЯЦ} _ $ {DAY} .gz :: Файл/местоположение/ Если дата 20150405, вывод для шаблона должен быть: filepattern_2015_04_05.gz – FenderBender