[Discuss] through the looking glass

Richard Pieri richard.pieri at gmail.com
Fri Jun 1 20:49:38 EDT 2018


On 6/1/2018 7:32 PM, dan moylan wrote:
> also b2 writes out empty files abc and xyz.
> 
> i've surely missed something fundamental, or did i just
> step into an alternate universe?

What you missed isn't so obvious.

"[" is a synonym for /bin/test with the caveat that a closing "]" is
required. What's happening is that "[ $st1 > $st2 ]" becomes:

  /bin/test abc > xyz

"/bin/test abc" returns true, and you get an empty file because test
generates no output, only return codes 0 (true) or 1 (false).

The portable fix is to rewrite your logic because the test command only
allows for "=" and "!=" in string comparisons.

The bash-specific fix is to change your single brackets to double
brackets: "[[ $st1 > $st2 ]]". "[[" is a bash built-in and it bypasses
all of the above problems. But it's not portable.

-- 
Rich P.



More information about the Discuss mailing list