extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/grid/scripts/stderrwrap.sh

Code
Comments
Other
Rev Date Author Line
6656 29 Mar 22 nicklas 1 #!/bin/sh
6656 29 Mar 22 nicklas 2 # $Id $
6656 29 Mar 22 nicklas 3 #
6656 29 Mar 22 nicklas 4 # Wrapper script to be used when the output to stderr
6656 29 Mar 22 nicklas 5 # should be re-directed to different places depending on
6656 29 Mar 22 nicklas 6 # the exit status of the executed command.
6656 29 Mar 22 nicklas 7 #
6656 29 Mar 22 nicklas 8 # The wrapper calls the program and if the exit status
6656 29 Mar 22 nicklas 9 # is non-zero, stderr is redirected to stderr as usual
6656 29 Mar 22 nicklas 10 # otherwise stderr is redirected to fd3.
6656 29 Mar 22 nicklas 11
6656 29 Mar 22 nicklas 12 # Usage: ./stderrwrap cmd [other parameters] 2> stderr-fail.txt 3> stderr-ok.txt
6656 29 Mar 22 nicklas 13 #
6656 29 Mar 22 nicklas 14
6656 29 Mar 22 nicklas 15 # create temporary file in current directory
6656 29 Mar 22 nicklas 16 TMP=`mktemp --tmpdir=.`
6656 29 Mar 22 nicklas 17
6656 29 Mar 22 nicklas 18 # start program and redirect stderr to the temporary file 
6656 29 Mar 22 nicklas 19 CMD=$1
6656 29 Mar 22 nicklas 20 shift
6656 29 Mar 22 nicklas 21 ${CMD} "${@}" 2> ${TMP}
6656 29 Mar 22 nicklas 22
6656 29 Mar 22 nicklas 23 # get exit code
6656 29 Mar 22 nicklas 24 EXIT_CODE=$?
6656 29 Mar 22 nicklas 25
6656 29 Mar 22 nicklas 26 if [ ${EXIT_CODE} -eq 0 ]; then
6656 29 Mar 22 nicklas 27   # exit code is 0, copy temporary file to fd3
6656 29 Mar 22 nicklas 28   cat ${TMP} 1>&3
6656 29 Mar 22 nicklas 29   rm ${TMP}
6656 29 Mar 22 nicklas 30 else
6656 29 Mar 22 nicklas 31   # exit code is != 0, copy temporary file to stderr
6656 29 Mar 22 nicklas 32     cat ${TMP} 1>&2
6656 29 Mar 22 nicklas 33     rm ${TMP}
6656 29 Mar 22 nicklas 34   # exit with same exit code
6656 29 Mar 22 nicklas 35   exit ${EXIT_CODE}
6656 29 Mar 22 nicklas 36 fi
6656 29 Mar 22 nicklas 37