2014-11-05 286 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并解析以查找错误。