Я пытаюсь выполнить неинтерактивную команду postgres.
PGPASSWORD=$PGPASS psql -h 127.0.0.1 -U postgresql -d $PGDB --command "select count(*) from services"
Который дал мне этот ответ.
psql: предупреждение: дополнительный аргумент командной строки "from" игнорируется
psql: предупреждение: дополнительный аргумент командной строки "services;" проигнорировано
psql: предупреждение: дополнительный аргумент командной строки "mydbname" игнорируется
psql: FATAL: база данных "count (*)" не существует
Я читал, что это может быть потому, что терминал / bash пытается разбить каждый аргумент до --command
/ -c
как своего собственного аргумента.
Я тоже пробовал это:
PSQLARGS=(-h 127.0.0.1 -U postgresql -c )
PSQLARGS+=("select count(*) from services;")
PSQLARGS+=(${PGDB})
PGPASSWORD=$PGPASS psql "${PSQLARGS[@]}"
Какой-то способ заставить терминал знать, что это один аргумент, это тоже не сработало.