BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss] through the looking glass



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.