Pulled from master, tested and confirmed to be fixed. Thanks. -Jim On Sun, Jul 24, 2016 at 9:58 PM, Denys Vlasenko <[email protected]> wrote:
> Thanks for the report. Fixed in git, please try it. > > On Fri, Jul 22, 2016 at 5:57 PM, James Hanley <[email protected]> > wrote: > > Since I'm unable to submit a bug via bugs.busybox.net due to some > > certificate error, I'm posting it here: > > > > > > When offset is a literal negative the variable produces and error "bad > > substitution" when issuing the proper form with a space after for the > first > > : in ${parameter:offset:length} for a negative number. See > > > https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion > > subsection on ${parameter:offset:length} > > > > It should be noted that this does work when the offset parameter is a > > variable instead of a literal with a negative number. The script below > > reproduces the issue and showcases the operation with a variable offset > vs a > > value offset. > > > > #!./busybox bash > > set -x > > > > parameter=abcdef > > offset=2 > > noffset=-2 > > > > echo "parametert '${parameter}'" > > echo "var offset '${parameter:${offset}}'" > > echo "var noffset '${parameter:${noffset}}'" > > echo "val 2 '${parameter:2}'" > > echo "val -2 (bad form) '${parameter:-2}'" > > echo "val -2 (good form) '${parameter: -2}'" > > #EOF > > > > With this script busybox bash gives the following output: > > ~/project/busybox $ ./test.sh > > + parameter=abcdef > > + offset=2 > > + noffset=-2 > > + echo parametert 'abcdef' > > parametert 'abcdef' > > + echo var offset 'cdef' > > var offset 'cdef' > > + echo var noffset 'ef' > > var noffset 'ef' > > + echo val 2 'cdef' > > val 2 'cdef' > > + echo val -2 (bad form) 'abcdef' > > val -2 (bad form) 'abcdef' > > ./test.sh: line 13: syntax error: bad substitution > > ~/project/busybox $ > > > > Changing the script to use the Linux Bash: > > jim@jim-VirtualBox:~/project/busybox$ ./test.sh > > + parameter=abcdef > > + offset=2 > > + noffset=-2 > > + echo 'parametert '\''abcdef'\''' > > parametert 'abcdef' > > + echo 'var offset '\''cdef'\''' > > var offset 'cdef' > > + echo 'var noffset '\''ef'\''' > > var noffset 'ef' > > + echo 'val 2 '\''cdef'\''' > > val 2 'cdef' > > + echo 'val -2 (bad form) '\''abcdef'\''' > > val -2 (bad form) 'abcdef' > > + echo 'val -2 (good form) '\''ef'\''' > > val -2 (good form) 'ef' > > jim@jim-VirtualBox:~/project/busybox$ > > > > > > > > > > _______________________________________________ > > busybox mailing list > > [email protected] > > http://lists.busybox.net/mailman/listinfo/busybox >
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
