[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