Dear All,

Substrings in bash contain 2 parameters, the start and the length.
Start may be negative, but if length is negative, it throws an error.
My request is that bash should understand negative length. This would be
useful in some occasions, and would be similar to the way PHP does it:
http://uk.php.net/manual/en/function.substr.php

For clarity, here are all the cases; the relevant ones are the last two:


$ stringZ=abcdef


$ echo ${stringZ:2}             #Positive start, no length
cdef                            #Reads from start.


$ echo ${stringZ: -2}           #Negative start, no length
ef                              #Reads 2 back from end.


$ echo ${stringZ:-2}            #No space before the -
abcdef                          #Is this what we expect?
                                #(or an unrelated bug?)


$ echo ${stringZ:2:1}           #Starts at 2, reads 1 char.
c


$ echo ${stringZ:2: -1}         #Wish: start at 2, read till
ERROR                           #1 before the end. i.e.
                                # cde

$ echo ${stringZ: -3: -1}       #Wish: start 3 back, read till
ERROR                           #1 before the end. i.e.
                                # de



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
   *  if y is negative, print up to (the end - y)



Thanks very much,

Richard


Reply via email to