[英]How can I capture STDERR into bash variable and not affect STDOUT?
我试图从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变量中?
$( )
构造总是捕获标准输出,但是您可以在文件描述符之间进行切换。 只需在{ }
对管道进行分组,然后使用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。
顺便说一句,我还建议使用小写(或大小写混合)的变量名,以免与具有特殊含义的变量或外壳程序或其他实用程序意外冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.