diff options
author | jilles <jilles@FreeBSD.org> | 2014-07-12 10:27:30 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2014-07-12 10:27:30 +0000 |
commit | 16670f204520ea21385b04e0f28b3b8b810c1460 (patch) | |
tree | 9565d5942cb94174c2fcbea095eedbaca8a3c50f | |
parent | a07e081f5d6641e2af6e38f67eea2a09b09e51cf (diff) | |
download | FreeBSD-src-16670f204520ea21385b04e0f28b3b8b810c1460.zip FreeBSD-src-16670f204520ea21385b04e0f28b3b8b810c1460.tar.gz |
sh: Consistently treat ${01} like $1.
Leading zeroes were ignored when checking whether a positional parameter is
set, but not when expanding its value. Ignore leading zeroes in any case.
-rw-r--r-- | bin/sh/expand.c | 13 | ||||
-rw-r--r-- | bin/sh/tests/parameters/Makefile | 1 | ||||
-rw-r--r-- | bin/sh/tests/parameters/positional4.0 | 4 |
3 files changed, 11 insertions, 7 deletions
diff --git a/bin/sh/expand.c b/bin/sh/expand.c index a126ca6..b8ef5ea 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -928,17 +928,16 @@ numvar: STPUTC(sep, expdest); } break; - case '0': - p = arg0; - strtodest(p, flag, subtype, quoted); - break; default: if (is_digit(*name)) { num = atoi(name); - if (num > 0 && num <= shellparam.nparam) { + if (num == 0) + p = arg0; + else if (num > 0 && num <= shellparam.nparam) p = shellparam.p[num - 1]; - strtodest(p, flag, subtype, quoted); - } + else + break; + strtodest(p, flag, subtype, quoted); } break; } diff --git a/bin/sh/tests/parameters/Makefile b/bin/sh/tests/parameters/Makefile index 4f9ae31..2574226 100644 --- a/bin/sh/tests/parameters/Makefile +++ b/bin/sh/tests/parameters/Makefile @@ -14,6 +14,7 @@ FILES+= optind2.0 FILES+= positional1.0 FILES+= positional2.0 FILES+= positional3.0 +FILES+= positional4.0 FILES+= pwd1.0 FILES+= pwd2.0 diff --git a/bin/sh/tests/parameters/positional4.0 b/bin/sh/tests/parameters/positional4.0 new file mode 100644 index 0000000..c1c380c --- /dev/null +++ b/bin/sh/tests/parameters/positional4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +set -- "x$0" 2 3 4 5 6 7 8 9 "y$0" +[ "${01}.${010}" = "$1.${10}" ] |