将 SFTP 输出捕获到变量时出现问题

Issue while capturing SFTP output to variable

我无法将以下 SFTP 命令的输出存储到结果变量。 命令是

result=`sftp -oPort=$p_port $p_ftp_user_id@$p_host <<EOF
                    cd $p_remote_dir
                    mget TEST_FEED*
                    rm TEST_FEED*
                    exit
EOF`
echo "$result"

当在 shell 脚本中触发上述命令时,输出错误如下所示:

Gtk-WARNING **: cannot open display: dora:0.0 Host key verification failed. Couldn't read packet: Connection reset by peer

我希望将此错误存储在 result 变量中,以便我可以将其用于以下验证:

value2=`echo "$result" |grep "failed" |wc -l`

但是我得到的 result 是空的。请帮助我在这里缺少什么。

您应该使用 2>&1

sftp 命令的标准错误重定向到标准输出
result=$(sftp -oPort=$p_port $p_ftp_user_id@$p_host <<EOF 2>&1
cd $p_remote_dir
mget TEST_FEED*
rm TEST_FEED*
exit
EOF
)

echo "$result"