I suspect what is happening (this is true in bash, I'm speculating about
fish) is that an unset variable is substituted with nothing (not the empty
string, but with nothing). Then the `test` command receives exactly one
argument: "-n". When `test` is given a single argument, the result is true
if that argument is not empty. This is true for the string "-n".

So another way to write the test is simply

if test $NOT_SET_VARIABLE; ...


Demo

$ set -q foobar
> $ test $foobar; and echo "not empty"; or echo "unset or empty"
> unset or empty
> $ set foobar ""
> $ test $foobar; and echo "not empty"; or echo "unset or empty"
> unset or empty
> $ set foobar abc
> $ test $foobar; and echo "not empty"; or echo "unset or empty"
> not empty




On Tue, Nov 11, 2014 at 5:33 PM, Greg Reagle <greg.rea...@umbc.edu> wrote:

> That's very interesting.  I get the same problem.  I don't think
> anything is wrong with your code.  I think something fishy is going on
> with fish, but I don't know what.  It looks like it might even be a bug
> in fish.  I would expect test -n to be the opposite of test -z, but that
> is not true sometimes.
>
> There are a few workarounds.
>
> I find that test -z works fine.
>
> Another way to test a variable is
>     if test ab"$variable"cd = abcd; echo zero; else; echo non-zero; end
>
> --
> http://www.fastmail.fm - Access all of your messages and folders
>                           wherever you are
>
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
> _______________________________________________
> Fish-users mailing list
> Fish-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/fish-users
>



-- 
*Glenn Jackman*
Senior Software Developer

*Pythian - Love your data*
jack...@pythian.com
Tel: +1 613 565 8696 Ext. 1478
Mobile: +1 613 808 4984
www.pythian.com

-- 


--



------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Fish-users mailing list
Fish-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fish-users

Reply via email to