Skip to content

Instantly share code, notes, and snippets.

@unakatsuo
Last active April 4, 2019 15:09
Show Gist options
  • Save unakatsuo/faaa0177332f1b44376a969128798c13 to your computer and use it in GitHub Desktop.
Save unakatsuo/faaa0177332f1b44376a969128798c13 to your computer and use it in GitHub Desktop.
Capture exit code from pipe command and stdout gets the original outputs.
#!/bin/bash
set -e
OUTPUTSCRIPT="test1"
test1(){
timeout 3 grep 5 > /dev/null
echo "found 5"
}
output(){
if [[ -z "$OUTPUTSCRIPT" ]]; then
cat
return 0
fi
tee >($OUTPUTSCRIPT | sed -e "s/^/prefix: /")
wait $!
}
shopt -s lastpipe
shopt -so pipefail
for i in $(seq 1 10)
do
echo $i
done | output
#!/bin/bash
set -e
OUTPUTSCRIPT="test1"
test1(){
timeout 3 grep ok > /dev/null
echo "found 5"
}
output(){
if [[ -z "$OUTPUTSCRIPT" ]]; then
cat
return 0
fi
type $OUTPUTSCRIPT > /dev/null
tee /dev/tty | $OUTPUTSCRIPT | sed -e "s/^/${OUTPUTSCRIPT}: /"
}
shopt -s lastpipe
shopt -so pipefail
for i in $(seq 1 10)
do
echo $i
done | output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment