Richard Richard - 15 days ago 5
Linux Question

IO Redirection - Swapping stdout and stderr (Advanced)

Given a shell script:

#!/bin/sh

echo "I'm stdout";
echo "I'm stderr" >&2;


Is there a way to call that script such that only stderr would print out, when the last part of the command is 2>/dev/null, ie

$ > sh myscript.sh SOME_OPTIONS_HERE 2>/dev/null
I'm stderr


Or, alternatively:

$ > sh myscript.sh SOME_OPTIONS_HERE >/dev/null
I'm stdout


It's a question at the end of a set of lecture slides, but after nearly a day working at this, I'm nearly certain it's some sort of typo. Pivoting doesn't work. 2>&- doesn't work. I'm out of ideas!

Answer
% (sh myscript.sh 3>&2 2>&1 1>&3) 2>/dev/null
I'm stderr
% (sh myscript.sh 3>&2 2>&1 1>&3) >/dev/null 
I'm stdout
Comments