[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can't test "-l"
From: |
Chet Ramey |
Subject: |
Re: Can't test "-l" |
Date: |
Fri, 15 Dec 2000 11:14:34 -0500 |
> Bash Version: 1.14
> Patch Level: 7
>
> Description:
> [Detailed description of the problem, suggestion, or complaint.]
>
> $ if [ "-l" != "-a" ] ; then echo "ok" ; fi
> [: -a: binary operator expected <----- ?
>
> $ aa='-l'
> $ if [ $aa != "-k" ] ; then echo "ok" ; fi
> [: -k: binary operator expected <----- ?
Here's the relevant item from the bash-2.05 COMPAT file:
15. Bash versions up to 1.14.7 included an undocumented `-l' operator to
the `test/[' builtin. It was a unary operator that expanded to the
length of its string argument. This let you do things like
test -l $variable -lt 20
for example.
This was included for backwards compatibility with old versions of the
Bourne shell, which did not provide an easy way to obtain the length of
the value of a shell variable.
This operator is not part of the POSIX standard, because one can (and
should) use ${#variable} to get the length of a variable's value.
Bash-2.x does not support it.
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet)
Chet Ramey, CWRU chet@po.CWRU.Edu http://cnswww.cns.cwru.edu/~chet/