ash: [EXPAND] Do not split quoted VSLENGTH and VSTRIM

Upstream patch:

    Date: Wed, 8 Oct 2014 15:42:08 +0800
    [EXPAND] Do not split quoted VSLENGTH and VSTRIM

    Currently VSLENGTH and VSTRIM* are field-split even within quotes.
    This is obviously wrong.  This patch fixes that.

    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2016-10-01 20:55:02 +02:00
parent c4d4380a07
commit 88ac97d02d
9 changed files with 88 additions and 30 deletions

View File

@ -0,0 +1,3 @@
Unquoted:<1>
Unquoted:<3>
Quoted:<123>

View File

@ -0,0 +1,13 @@
# 123 chars long
a="\
01234567890123456789\
01234567890123456789\
01234567890123456789\
01234567890123456789\
01234567890123456789\
0123456789\
0123456789\
012"
IFS=2; for v in ${#a}; do echo Unquoted:"<$v>"; done
IFS=2; for v in "${#a}"; do echo Quoted:"<$v>"; done

View File

@ -0,0 +1,12 @@
Unquoted%:<q>
Unquoted%:<w>
Unquoted%:<e>
Unquoted%:<r>
Unquoted%:<t>
Unquoted#:<w>
Unquoted#:<e>
Unquoted#:<r>
Unquoted#:<t>
Unquoted#:<y>
Quoted%:<q w e r t >
Quoted#:< w e r t y>

View File

@ -0,0 +1,5 @@
a="q w e r t y"
for v in ${a%y}; do echo Unquoted%:"<$v>"; done
for v in ${a#q}; do echo Unquoted#:"<$v>"; done
for v in "${a%y}"; do echo Quoted%:"<$v>"; done
for v in "${a#q}"; do echo Quoted#:"<$v>"; done