Michael Haggerty [off-list ref] writes:
I don't see how that can help. The result of a pipeline is taken from
the last command. The exit codes of earlier commands in the pipeline are
lost in the sands of time:
$ false | true
$ echo $?
0
$ false | ( ! false )
$ echo $?
0
Working around this POSIX shell limitation is surprisingly awkward in a
general-purpose script. But in this case you could use a temporary file:
git for-each-ref >refs-actual &&
! grep refs/worktree <refs-actual && [...]
It is not just "you could", but that is what you "should" do, if you
cared the exit status from for-each-ref.
Thanks.