Сценарий оболочки, использующий цикл for для выполнения разных переменных на каждой итерации

#shell

#оболочка

Вопрос:

Я пытаюсь выполнить вложенную итерацию для каждого цикла в сценарии оболочки, который дает ожидаемые результаты, но вместе с дополнительным выводом.

Ниже приведен код.

  for container in ${DB_1} ${DB_2}
 do
 for container_dump in ${DB_1_bkup} ${db_2bkup}
 do
    echo "${container} and backups/${container_dump}_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump"
  done
done
  

Какой результат я получаю, это.

 DB_1 and backups/DB_1_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
DB_1 and backups/DB_2_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
DB_2 and backups/DB_1_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
DB_2 and backups/DB_2_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
  

Чего я ожидаю, так это

 DB_1 and backups/DB_1_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
DB_2 and backups/DB_2_bkup_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump
  

Кто-нибудь может, пожалуйста, помочь?

Ответ №1:

Если я правильно понимаю ваш вопрос, вам не нужны два вложенных цикла…
Просто получите имя контейнера из переменной bkup…

 for container_dump in ${DB_1_bkup} ${db_2bkup}
do
    if [ "${container_dump}" = "${DB_1_bkup}" ]; then
        container=${DB_1}
    else
        container=${DB_2}
    fi
    echo "${container} and backups/${container_dump}_dump_`date  %Y-%m-%d"_"%H_%M_%S`.dump"
done