Задать вопрос

Как передать значения в команду?

Необходимо периодически удалять все базы кроме системных.
Список нужных баз для удаления получаю
sudo -u postgres psql SELECT datname FROM pg_database WHERE NOT datistemplate AND datname <> 'postgres';

И нужно передать этот список в sudo -u postgres dropdb -f
Можно это собрать в одну команду?
sudo -u postgres dropdb -f   || sudo -u postgres psql SELECT datname FROM pg_database WHERE NOT datistemplate AND datname <> 'postgres';
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Дмитрий К ответам на вопрос (3)
Bash-скрипт наподобие такого (запускать от пользователя postgres). Если нужен однострочник, то вместо цикла for .. in можно использовать xargs

#!/bin/bash
for DBNAME in $( psql -q -c "\t" -c "\a" -c "SELECT datname FROM pg_database WHERE NOT (datistemplate AND datname <> 'postgres');" )
do
    dropdb -f $DBNAME
done


psql -q -c "\t" -c "\a" -c "SELECT datname FROM pg_database WHERE NOT (datistemplate AND datname <> 'postgres');" | xargs -l1 dropdb -f
Ответ написан