diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-30 15:35:05 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-30 15:35:05 +0000 |
commit | c90e1be01b76aed12ef1cd77c789c842bda26ba6 (patch) | |
tree | 2891fa587a7bd35cee519aca8dc9424caad437f5 /shell | |
parent | 4f504a9e575f6acda8a1402b88b2fdb63b11d8f7 (diff) | |
download | busybox-w32-c90e1be01b76aed12ef1cd77c789c842bda26ba6.tar.gz busybox-w32-c90e1be01b76aed12ef1cd77c789c842bda26ba6.tar.bz2 busybox-w32-c90e1be01b76aed12ef1cd77c789c842bda26ba6.zip |
ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 2 | ||||
-rw-r--r-- | shell/ash_test/ash-misc/shift1.right | 9 | ||||
-rwxr-xr-x | shell/ash_test/ash-misc/shift1.tests | 10 |
3 files changed, 20 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c index 1eb29eb95..3a1e1d797 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -9665,7 +9665,7 @@ shiftcmd(int argc UNUSED_PARAM, char **argv) | |||
9665 | if (argv[1]) | 9665 | if (argv[1]) |
9666 | n = number(argv[1]); | 9666 | n = number(argv[1]); |
9667 | if (n > shellparam.nparam) | 9667 | if (n > shellparam.nparam) |
9668 | n = shellparam.nparam; | 9668 | n = 0; /* bash compat, was = shellparam.nparam; */ |
9669 | INT_OFF; | 9669 | INT_OFF; |
9670 | shellparam.nparam -= n; | 9670 | shellparam.nparam -= n; |
9671 | for (ap1 = shellparam.p; --n >= 0; ap1++) { | 9671 | for (ap1 = shellparam.p; --n >= 0; ap1++) { |
diff --git a/shell/ash_test/ash-misc/shift1.right b/shell/ash_test/ash-misc/shift1.right new file mode 100644 index 000000000..b53453c3a --- /dev/null +++ b/shell/ash_test/ash-misc/shift1.right | |||
@@ -0,0 +1,9 @@ | |||
1 | 2 3 4 | ||
2 | 0: shift: line 1: Illegal number: -1 | ||
3 | 1 2 3 4 | ||
4 | 2 3 4 | ||
5 | 3 4 | ||
6 | 4 | ||
7 | |||
8 | 1 2 3 4 | ||
9 | 1 2 3 4 | ||
diff --git a/shell/ash_test/ash-misc/shift1.tests b/shell/ash_test/ash-misc/shift1.tests new file mode 100755 index 000000000..0992d9b1b --- /dev/null +++ b/shell/ash_test/ash-misc/shift1.tests | |||
@@ -0,0 +1,10 @@ | |||
1 | $THIS_SH -c 'shift; echo "$@"' 0 1 2 3 4 | ||
2 | #We do abort on -1, but then we abort. bash executes echo. | ||
3 | $THIS_SH -c 'shift -1; echo "$@"' 0 1 2 3 4 | ||
4 | $THIS_SH -c 'shift 0; echo "$@"' 0 1 2 3 4 | ||
5 | $THIS_SH -c 'shift 1; echo "$@"' 0 1 2 3 4 | ||
6 | $THIS_SH -c 'shift 2; echo "$@"' 0 1 2 3 4 | ||
7 | $THIS_SH -c 'shift 3; echo "$@"' 0 1 2 3 4 | ||
8 | $THIS_SH -c 'shift 4; echo "$@"' 0 1 2 3 4 | ||
9 | $THIS_SH -c 'shift 5; echo "$@"' 0 1 2 3 4 | ||
10 | $THIS_SH -c 'shift 6; echo "$@"' 0 1 2 3 4 | ||