我需要为每个错误获取不同的SFTP退出代码。例如,没有这样的文件或目录' - >退出代码= 552或550而不是返回1。 我尝试过以下操作并且无效:
//A05FTP EXEC PROC=SFTPROC,COND=(0,NE)
//COPSFTP.MYSTDIN DD *
host="xpto.xpty.xptz"
lzopts mode=text
cd /home/apl/files/unl
ls
a=`ls | wc -l`
echo `$a`
echo $?
QUIT
//*
并且假脱机中的输出是:
cozsftp> lzopts mode=text
mode=text
cozsftp> lzopts mode=text
mode=text
cozsftp> cd /home/apl/files/unl
Ý09.807¨ Invalid command.
cozsftp> a= 1
CoZBatchÝI¨: returning rc=exitcode=1
任何人都可以帮助我吗?
答案 0 :(得分:1)
COZBATCH允许您将shell脚本嵌入到JCL中,因此您不需要使用BPXBATCH。 BPXBATCH确实是一个糟糕的实用程序。如果你正在使用Co:Z那么对你有好处就会摇滚。
如果要运行shell命令,则需要使用!逃避角色。
!echo $ a
FWIW,SFTP总是在出错时返回1。我不确定你是否可以改变它。应该在sysout中记录错误。
答案 1 :(得分:0)
你的问题可能只是 echo` $ a` 。请尝试用引号括起来代替刻度线。
更一般地说,如果你想进行更详细的错误检查,而不是使用SFTP程序(SFTPROC),我认为你自己写一个用BPXBATCH执行的简单脚本会更好。该脚本将发出相同的SFTP命令,但您可以捕获并重定向输出(STDOUT / STDERR)并根据返回值($?)和任何错误消息,您当然可以检测到您可能需要的所有异常情况。