Выйдите из сценария оболочки, если psql выдает ошибку при выполнении сценариев sql - PullRequest
0 голосов
/ 06 апреля 2020

У меня ниже сценарий оболочки

#! /bin/sh

for file in $(ls -l scripts/*.sql | awk '{print $NF}'); do 
 psql -h host -d db -U user -p port -f $file;
 result=$?
 if [ $result -ne 0 ] 
   then
   exit 1
 fi
done

$ результат всегда будет равен 0, даже если я добавлю ошибку в файл sql. Я хочу выйти из сценария оболочки, если какой-либо сценарий sql выдает ошибку. Я что-то упустил при отлове ошибки последнего выполненного оператора

1 Ответ

4 голосов
/ 06 апреля 2020

Попробуйте: psql -v ON_ERROR_STOP=1 -f $file

Это приводит к psql остановке при первой ошибке SQL и возвращению ненулевого кода возврата в этом случае.

...