Как использовать двойные трубы || с heredo c? - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь достичь sh довольно простой цели: отреагировать на возможную ошибку предыдущей команды второй командой. Ключ в спицах заключается в необходимости использовать синтаксис heredo c в первой команде.

this (упрощенный пример) даст результат, который я хочу поймать:

psql -c "select * from table_that_doesnt_exist" || echo "error"

кроме того, SQL, который мне нужно выполнить, состоит из нескольких команд, и в моих обстоятельствах я должен сделать это с помощью heredocs:

psql << SQL
select * from good_table;
select * from table_that_doesnt_exist
SQL

и при попытке успешно прочитать stderr из этого типа конфигурации (I ' Я пробовал миллион способов) Я не могу понять это. Эти методы не работают:

( psql << SQL
select * from good_table;
select * from table_that_doesnt_exist
SQL
) || echo "error"

или

psql << SQL || echo "error"
select * from good_table;
select * from table_that_doesnt_exist
SQL
...