I would like to get an opinion on checking the error of a shell script. The system that I am supporting contains a simple shell script that is run multiple times by another application (a java). The java calls a shell script that performs ftp connection open, moving the local directory, mget command and finally a bye command. It then checks the $? after the bye command.
I know that in the first place this code is suspicious since it should only check the bye command always but it intermittently causes an error. I already ask the UNIX admin to see if there are log error in the system, but they said there is non.
Basically the script general structure is:
sftp -oPort=<port forwarding port> <ip and user> <<==
lcd <some variable>
mget <some variable>
bye
rtn=$?
if [ ${rtn} != 0 ]
then
exit 1
fi
exit 0
any ideas why the $? returns a non zero at times?
Reasons for a non-zero exit code:
If you want to deliberately ignore errors from commands being used, then you can prefix the command with
-e.g.mgetbecomes-mgetAn important thing to do when trying to debug this is to capture the output of the command and dump it when the command fails e.g.
The
trapdeletes the file when the script terminates.