ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
This commit is contained in:
parent
4f504a9e57
commit
c90e1be01b
@ -9665,7 +9665,7 @@ shiftcmd(int argc UNUSED_PARAM, char **argv)
|
||||
if (argv[1])
|
||||
n = number(argv[1]);
|
||||
if (n > shellparam.nparam)
|
||||
n = shellparam.nparam;
|
||||
n = 0; /* bash compat, was = shellparam.nparam; */
|
||||
INT_OFF;
|
||||
shellparam.nparam -= n;
|
||||
for (ap1 = shellparam.p; --n >= 0; ap1++) {
|
||||
|
9
shell/ash_test/ash-misc/shift1.right
Normal file
9
shell/ash_test/ash-misc/shift1.right
Normal file
@ -0,0 +1,9 @@
|
||||
2 3 4
|
||||
0: shift: line 1: Illegal number: -1
|
||||
1 2 3 4
|
||||
2 3 4
|
||||
3 4
|
||||
4
|
||||
|
||||
1 2 3 4
|
||||
1 2 3 4
|
10
shell/ash_test/ash-misc/shift1.tests
Executable file
10
shell/ash_test/ash-misc/shift1.tests
Executable file
@ -0,0 +1,10 @@
|
||||
$THIS_SH -c 'shift; echo "$@"' 0 1 2 3 4
|
||||
#We do abort on -1, but then we abort. bash executes echo.
|
||||
$THIS_SH -c 'shift -1; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 0; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 1; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 2; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 3; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 4; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 5; echo "$@"' 0 1 2 3 4
|
||||
$THIS_SH -c 'shift 6; echo "$@"' 0 1 2 3 4
|
Loading…
Reference in New Issue
Block a user