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

Code
Comments
Other
Rev Date Author Line
6630 07 Mar 22 nicklas 1 #!/bin/bash
6628 07 Mar 22 nicklas 2 # $Id $
6628 07 Mar 22 nicklas 3 #
6628 07 Mar 22 nicklas 4 # Wrapper script to be used for "misbehaving" programs that 
6628 07 Mar 22 nicklas 5 # write everyting to stderr, including important output and
6628 07 Mar 22 nicklas 6 # error messages. 
6628 07 Mar 22 nicklas 7 #
6628 07 Mar 22 nicklas 8 # The wrapper calls the program and redirect the output to 
6628 07 Mar 22 nicklas 9 # stdout if the program exits with 0 or to stderr if it
6628 07 Mar 22 nicklas 10 # exits with some other value.
6628 07 Mar 22 nicklas 11
6628 07 Mar 22 nicklas 12 # Usage: ./stdwrap cmd [other parameters] 
6628 07 Mar 22 nicklas 13 #
6628 07 Mar 22 nicklas 14
6628 07 Mar 22 nicklas 15 # create temporary file in current directory
6628 07 Mar 22 nicklas 16 TMP=`mktemp --tmpdir=.`
6628 07 Mar 22 nicklas 17
6628 07 Mar 22 nicklas 18 # start program and redirect stderr + stdout to the temporary file 
6628 07 Mar 22 nicklas 19 CMD=$1
6628 07 Mar 22 nicklas 20 shift
6628 07 Mar 22 nicklas 21 ${CMD} "${@}" 2> ${TMP} 1>&2 
6628 07 Mar 22 nicklas 22
6628 07 Mar 22 nicklas 23 # get exit code
6628 07 Mar 22 nicklas 24 EXIT_CODE=$?
6628 07 Mar 22 nicklas 25
6628 07 Mar 22 nicklas 26 if [ ${EXIT_CODE} -eq 0 ]; then
6628 07 Mar 22 nicklas 27   # exit code is 0, copy temporary file to stdout
6628 07 Mar 22 nicklas 28     cat ${TMP}
6628 07 Mar 22 nicklas 29   rm ${TMP}
6628 07 Mar 22 nicklas 30 else
6628 07 Mar 22 nicklas 31   # exit code is != 0, copy temporary file to stderr
6628 07 Mar 22 nicklas 32     cat ${TMP} 1>&2
6628 07 Mar 22 nicklas 33     rm ${TMP}
6628 07 Mar 22 nicklas 34   # exit with same exit code
6628 07 Mar 22 nicklas 35   exit ${EXIT_CODE}
6628 07 Mar 22 nicklas 36 fi
6628 07 Mar 22 nicklas 37