ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
No binary (build failed)
—
(log yok)
| @@ -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++) { | |
| @@ -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 |
| @@ -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 |