[x3d-public] Bash function to catch return value
John Carlson
yottzumm at gmail.com
Sun Jul 23 01:00:16 PDT 2023
Thanks, Leonard, you helped a lot. Here's what I came up with (not fully
tested).
function exit_on_failure() {
local status=$1;
local message=$2;
local goodstatus=$3;
local goodmessage=$4;
if [[ $status -ne 0 && -z "$goodstatus" && $status -ne $goodstatus
]]
then
echo $message 1>&2
exit $status
elif [[ "$status" = "$goodstatus" ]]
then
echo $goodmessage 1>&2
fi
}
Here's usage:
# copy downloaded zips into input folder to prepare for unpacking
cp "$INPUTZIP" ${INPUTDIR}
exit_on_failure $? "Failed to copy ${INPUTZIP} to ${INPUTDIR}"
cp "$LOCATIONZIP" ${INPUTDIR}
exit_on_failure $? "Failed to copy ${LOCATIONZIP} to ${INPUTDIR}"
cp "$VERTFILE" "${VERTICES}"
exit_on_failure $? "Failed to copy ${VERTFILE} to ${VERTICES}"
# move to input folder and unzip files.
cd $INPUTDIR
# unpack zip files
unzip "$ZIPNAME"
exit_on_failure $? "install unzip" 2 "Possible success"
unzip "$LOCATIONZIP"
exit_on_failure $? "install unzip" 2 "Possible success"
cd ..
On Sat, Jul 22, 2023 at 9:01 PM Leonard Daly <Leonard.Daly at realism.com>
wrote:
> Not sure why you would want a script as this is almost always done in-line.
>
> $? contains the exit status. 0 is almost always success (I don't know
> where it is not) and != 0 is failure. Error message is written to STDERR
> unless you direct a command to fail silently.
>
> So something like
>
> (A | B | C ...) 2> /tmp/pipe-$$.err
> if [ $? -ne 0 ]
> then
> exitCode=$?
> cat /tmp/pipe-$$.err
> exit $exitCode
> fi
>
> Passing the piped command to a function can be dangerous/difficult because
> of shell interpolation and quoting. Also note that the piped output
> (STDOUT) is printed on the default (at the time of the pipe) output
> (probably console), and pipe-$$.err is never cleaned up (deleted). That is
> not really bad because most systems delete files after 24-48 hours in /tmp.
> If there are no errors, then /tmp/pipe-$$.err is never created.
>
> Additional useful info:
> https://unix.stackexchange.com/questions/164482/pipe-redirect-a-group-of-commands
>
> Leonard Daly
>
>
>
> On 7/21/2023 10:15 PM, John Carlson wrote:
>
> Linux folks:
>
> Does anyone have a bash function (not a separate script) to check the exit
> status of the passed in pipeline or passed in exit status, print out the
> passed in error message, and exit the script if the exit status indicates
> failure?
>
> Thanks!
>
> Should be fairly easy to write?
>
> John
>
> _______________________________________________
> x3d-public mailing listx3d-public at web3d.orghttp://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> --
> *Leonard Daly*
> 3D Systems Engineering
> President, Daly Realism - *Creating the Future*
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230723/ec886018/attachment.html>
More information about the x3d-public
mailing list