我正在尝试从pg_dump
捕获错误,但无法弄清楚如何将其转换为bash变量。这不起作用,因为STDOUT将要gzip。
OUTPUT=$(/bin/pg_dump -c --if-exists --dbname=cfMaster -U cfMaster | /bin/gzip > ~cftvdun/dbbackups/cfMaster.tmp.sql.gz)
在这种情况下如何将STDERR变为bash变量?
答案 0 :(得分:1)
$( )
构造始终捕获stdout,但您可以在文件描述符之间进行操作。只需将管道分组到{ }
,然后使用2>&1
将组的stderr重定向到标准输出:
output=$( { /bin/pg_dump -c --if-exists --dbname=cfMaster -U cfMaster | /bin/gzip > ~cftvdun/dbbackups/cfMaster.tmp.sql.gz; } 2>&1 )
如果您还想要标准输出(而不仅仅是将其发送到文件),它会变得更复杂。我认为在这种情况下你必须通过FD#3来解决。
顺便说一下,我还建议使用小写(或混合大小写)变量名,以避免与shell或其他实用程序具有特殊含义的变量发生意外冲突。