2015-11-02 60 views
2

我無法將低於SFTP命令的輸出存儲到結果變量。 的命令是將SFTP輸出捕捉到變量時發出的問題

result=`sftp -oPort=$p_port [email protected]$p_host <<EOF 
        cd $p_remote_dir 
        mget TEST_FEED* 
        rm TEST_FEED* 
        exit 
EOF` 
echo "$result" 

當是火上述外殼腳本輸出ERR指令是象下面這樣:

GTK的WARNING **:無法打開顯示:多拉:0.0主機密鑰驗證 失敗。無法讀取數據包:將連接復位

我要存儲在結果這個錯誤變量,這樣我可以用它來驗證如下:

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

但我越來越結果爲空。請幫助我在這裏失蹤。

+0

還試圖像下面,但仍然面臨着同樣的問題,結果=「$(SFTP -oPort = $ p_port $ p_ftp_user_id @ $ p_host << EOF sftp命令 CD $ p_remote_dir MGET TEST_FEED * RM TEST_FEED * 出口 EOF )」 – sat33man

回答

1

你應該stderr重定向到stdout使用2>&1

result=$(sftp -oPort=$p_port [email protected]$p_host <<EOF 2>&1 
cd $p_remote_dir 
mget TEST_FEED* 
rm TEST_FEED* 
exit 
EOF 
) 

echo "$result" 
+0

結果仍然是NULL。這次腳本執行後沒有打印錯誤消息。你能詳細說明2>/dev/null和它是如何工作的。 – sat33man

+0

對不起,我有一個錯字。現在就試試。 – anubhava

+0

是的,它現在可以工作。謝謝你,你可以解釋這個2>&1如何重定向輸出。我只需要對這個語法有一些瞭解。謝謝 – sat33man