2017-10-09 186 views
1

因此,我试图在使用LFTP传输文件时捕获特定错误,但问题是,由于调用<<EOF以允许与交互式shell进行交互,我无法捕获它们。在LFTP Bash脚本中捕获错误

我使用的代码如下:

#Start backup procedure 
lftp<<EOF 
open ftps://$HOST || bye && #SEND MAIL CANNOT CONNECT TO SERVER (ERROR) 
login $USER $PASSWORD || #SEND MAIL AUTH FAILURE (ERROR) 
#Remove existing backups on FTP server 
glob -a rm -r ./* || bye && #SEND MAIL FAILED (WARNING) TO REMOVE PREVIOUS BACKUPS 
#Upload new backup to FTP server 
lcd /var/opt/gitlab/backups 
mput *.tar || bye && #SEND EMAIL (ERROR) FAILED TO UPLOAD FILES 
bye 
EOF 

显然,当告别被称为交互式会话关闭,但没有得到& &后执行。

任何人有任何想法如何做这样具体的错误捕捉?

+0

你尝试使用陷阱,而不是'||'和''&&运营商? – Aserre

+0

我怀疑你将需要转向'Tcl/expect'来获得该级别的检查。 –

+0

@Aserre - 还没有尝试过,会试试看。 – thezadmin

回答

0

可以使用命令分组使用括号:

open... || (shell send-mail; exit 1)