pipestatus() { local S=(${PIPESTATUS[*]}) if test -n "$*" then test "$*" = "${S[*]}" else ! [[ "${S[@]}" =~ [^0\ ] ]] fi }
Note that S is not set to ("${PIPESTATUS[@]}"); this is so that we can re-create an array if PIPESTATUS is passed as a string, like this:
PIPE_STATUS="${PIPESTATUS[*]}" pipestatus
because an array cannot be passed in that fashion. Why would anyone want to do that? Probably not directly, but other helper commands just and also may want to preserve PIPESTATUS as best as possible to permit an: also pipestatus combination.
Usage examples:
1. get_bad_things must succeed, but it should produce no output; but we want to see output that it does produce
get_bad_things | grep '^' pipeinfo 0 1 || return
2: all pipeline must succeed
thing | something -q | thingy pipeinfo || return
No comments:
Post a Comment