2014-11-05 128 views
0

我想從另外一個(父腳本)調用的shell腳本執行一個ftp。代碼是這樣的:在shell腳本中處理FTP錯誤

ftp -inv <<EOF 
open $hostname 
user $username $password 

binary 


cd $dir 
put $renamed_file 

bye 

EOF 

當我檢查了返回代碼,如:

exitStatus=$? 

它總是返回0,即使FTP失敗。我是shell腳本編程新手,正在努力解決這個問題。有人可以幫我嗎?

謝謝!

+0

我同意@CharlesDalsass,但如果你真的很幸運,你可能會發現一個ftp客戶端,當出現非零代碼時就會退出。在你的命令列表中有'bye'幾乎肯定會否定這種行爲,所以試着去解決這個問題。否則,我曾經運行過一個'dir'命令來查看我期待的文件是否已經到達。如果名稱沒有改變,那麼在啓動'ftp'之前,您必須刪除或重命名現有的副本。另外,我認爲這裏有很多關於S.O的問題。對於這個問題,閱讀通過,你可能會發現更好的技術。祝你好運! – shellter 2014-11-05 03:56:29

回答

1

如果您查看bash(或任何shell)退出狀態,則不打算取回所需的響應。 Bash認爲這個命令工作得很好 - 即使它確實是一個錯誤。你最好的選擇是使用「批處理模式」(你的FTP程序應該有類似的東西)。捕獲任何錯誤輸出到文件或STDERR並解析以查找錯誤。