tag 79901 notabug
close 79901
stop

details below...

On 27/11/2025 12:33, Carlos Maiolino via GNU coreutils Bug Reports wrote:
Hello,

I'm not sure if the behavior below is expected or perhaps a bug?
I'm using GNU coreutils 9.6

According to the TEST(1) manpage:

        -n STRING
               the length of STRING is nonzero

        STRING equivalent to -n STRING


However, the small script below will produce inconsistent results, where
only the first if conditional will evaluate to True:

#!/bin/bash

B=" "

if [ -n $B ]; then
         echo "passed 1"
fi

if [ $B ]; then
         echo "passed 2"
fi


However it seems to me the variable expansion plays a role here, I'm not
sure if the variable expansion was supposed to differ between "$B" and
"-n $B" too, so perhaps it's a bash thing not a "test" thing?

You need to quote the variable expansion to maintain spaces,
otherwise `test -n $B` is equivalent to `test '-n'` which is true.

You want: [ -n "$B" ] && [ "$B" ] && echo both passed

cheers,
Padraig.



Reply via email to