Я использую Heroku cli, чтобы получить список резервных копий из Heroku. Я ищу только те, у которых запланировано резервное копирование (heroku pg:backups:schedules
), но единственный способ получить их идентификатор - через heroku pg:backups
, который печатает все. Я пытаюсь использовать grep, чтобы вырезать вывод и дать мне список идентификаторов только для тех, которые мне нужны.
Я думаю, что я должен иметь возможность использовать список массива имен резервных копий, которые мне нужны, и grep это против полного списка резервных копий. Однако grep либо не нравится итерация массива (array[0]
), либо он считает, что я передаю ему имя файла.
for (( x=0; x<DB_COUNT; x++ ))
do
BACKUP_NAMES[($x)]=$(heroku pg:backups:schedules -a $APP_NAME | sed -n '1!p' | cut -f1 -d":")
BACKUP_IDS[($x)]=$(heroku pg:backups -a $APP_NAME | grep '[a-z][0-9][0-9][0-9]*' | grep -w $BACKUP_NAMES)
done
Я пробовал grep -w ${BACKUP_NAMES[$x]}
grep -w "$BACKUP_NAMES[$x]"
grep -w "$BACKUP_NAMES"
и тысячи других, но я либо получаю синтаксическую ошибку, либо grep думает, что $ BACKUP_NAMES - это файл, а не шаблон. Я пытался выяснить это часами, и я просто в полном замешательстве.
РЕДАКТИРОВАТЬ:
BACKUP_NAMES
содержит DATABASE_NAME DATABASE_NAME2
Выход heroku pg:backups
=== Backups
ID Created at Status Size Database
a555 2020-01-09 07:26:21 +0000 Completed 2020-01-09 07:30:08 +0000 1.16GB DATABASE_NAME
a554 2020-01-08 07:26:21 +0000 Completed 2020-01-08 07:30:08 +0000 5.93GB DATABASE_NAME2
a553 2020-01-07 07:26:21 +0000 Completed 2020-01-07 07:30:08 +0000 1.16GB DATABASE_NAME3
a552 2020-01-06 07:26:21 +0000 Completed 2020-01-06 07:30:08 +0000 5.89GB DATABASE_NAME4
a551 2020-01-05 07:26:21 +0000 Completed 2020-01-05 07:30:08 +0000 3.21GB DATABASE_NAME5
a550 2020-01-04 07:26:21 +0000 Completed 2020-01-04 07:30:08 +0000 1.16GB DATABASE_NAME6
Выход heroku pg:backups:schedules
=== Backup Schedules
DATABASE_NAME: daily at 5:00 UTC
DATABASE_NAME2: daily at 7:00 UTC