By mrm5102
I’m writing a Bash Script and in it I execute a piped command within a Function I wrote and I can’t seem to redirect the
stderr from the 1st pipe to stdout..?
I’m setting the output to an Array “COMMAND_OUTPUT” and splitting on newlines using this –> “( $(…) )”. By putting
the extra ( ) around the $( ), it splits the output using the IFS and sets the array elements.
Then the command after the semi-colon echos BOTH Return Codes from each command using the PIPESTATUS Array
Variable to STDOUT. which works perfectly getting the Return Codes.
Here’s the Command:
IFS="
"
COMMAND_OUTPUT=( $(cat "$SEND_FILE" 2>&1 | send_nsca $IPADDR -p 5667 -to 10 -d , -c $SEND_NSCA_CFG ; echo "EXIT_CODES=${PIPESTATUS[@]}") )
I’ve tried adding “2>&1” to each point in the Command within “$(..)”, but none seem to send the ‘cat’ command’s STDERR
to STDOUT in order to capture the error inside the Array “COMMAND_OUTPUT”.
If I set $SEND_FILE to a file that doesn’t Exist, I can see that everything gets stored in the COMMAND_OUTPUT Array
except for “cat: : No such file or directory”. Which get printed immediately when that line is executed.
Any ideas on how to redirect the stderr from the 1st pipe command to stdout? Any thoughts would be much appreciated!
Thanks in Advance,
Matt
…read more
Source: FULL ARTICLE at The UNIX and Linux Forums