summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/sh/expand.c13
-rw-r--r--bin/sh/tests/parameters/Makefile1
-rw-r--r--bin/sh/tests/parameters/positional4.04
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}" ]
OpenPOWER on IntegriCloud