bug-bash
[Top][All Lists]
Advanced

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

Re: Bash - various feature requests


From: Grzegorz Adam Hankiewicz
Subject: Re: Bash - various feature requests
Date: Fri, 29 Dec 2006 20:29:46 +0100
User-agent: Mutt/1.5.11+cvs20060126

On 2006-12-27, Richard Neill <rn214@hermes.cam.ac.uk> wrote:
> 1)substr support for a negative length argument.
> For example,
>   stringZ=abcdef
>   echo ${stringZ:2:-1}  #prints cde
>
> i.e. ${string:x:y}
>   returns the string, from start position x for y characters.
>   but, if x is negative, start from the right hand side
>   and if y is negative, print up to the end, -y.
>
> This would work the same way as PHP, and be extremely useful for, say,
> removing an extension from a filename.

If extension removal is all you need, you can already do it.

        $ for f in *; do echo $f; done
        Makefile.am
        Makefile.in
        ucl
        $ for f in *; do echo ${f%.*}; done
        Makefile
        Makefile
        ucl

See "Parameter Expansion" in the bash manual. Interestingly that same
section tells for '${parameter:offset}' expansion:

        "If offset evaluates to a number less than  zero,  the value
        is used  as  an  offset  from the end  of the value of parameter."

However, if I use echo ${f:-3} I don't get the expected result. I wonder
if this is a bug of my bash version:

        $ bash --version
        GNU bash, version 3.00.16(1)-release (i486-pc-linux-gnu)
        Copyright (C) 2004 Free Software Foundation, Inc.
        $ for f in *; do echo ${f:-3}; done
        Makefile.am
        Makefile.in
        ucl

It works with ${f:0-3}, which is odd, at least from my point of view.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]