Thread (6 messages) flat view 6 messages, 3 authors, 2016-06-15

Re: [PATCH] filter-branch: Avoid an error message in the map function.

From: Johannes Sixt <hidden>
Date: 2016-06-15 22:43:19

Johannes Schindelin wrote:
Hi,

On Wed, 4 Jul 2007, Johannes Sixt wrote:
quoted
-     test -r "$workdir/../map/$1" || echo "$1"
-     cat "$workdir/../map/$1"
+     test -r "$workdir/../map/$1" &&
+     cat "$workdir/../map/$1" ||
+     echo "$1"
I think this does not do what you want. If I read it correctly, it will
not do anything if $workdir/../map/$1 is not readable. I think you need
this:

        (test -r "$workdir/../map/$1" &&
        cat "$workdir/../map/$1") ||
        echo "$1"

But that is a little too cute, so I personally would prefer an
if-then-else-fi, because that is the idea of that code snippet.
It does do what I think it should do. I tested it. Your elaborate
version is not required. The reason is that in the shell && and || have
equal precedence; if there is ... && cmd ... then cmd is run if the most
recent result is success, and if there is ... || cmd ... then cmd is run
if the most recent result is failure; in both cases cmd is otherwise
skipped and does not count as "most recent result".

-- Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help