spec test index / oilshell.org
| status | bash | mksh | zsh | osh | |
| pass | 13 | 8 | 7 | 14 | |
| ok | 1 | 0 | 3 | 0 | |
| N-I | 0 | 2 | 1 | 0 | |
| BUG | 0 | 4 | 3 | 0 | |
| total | 14 | 14 | 14 | 14 | |
| case | bash | mksh | zsh | osh | description | 
| 0 | pass | pass | N-I | pass | Multiple right brackets inside expression | 
| details | |||||
| 1 | pass | pass | pass | pass | Slicing of string with constants | 
| 2 | pass | pass | pass | pass | Slicing of string with variables | 
| 3 | pass | pass | ok | pass | Array index on LHS of assignment | 
| details | |||||
| 4 | pass | pass | ok | pass | Array index on LHS with indices | 
| details | |||||
| 5 | pass | BUG | BUG | pass | Slicing of string with expressions | 
| details | details | ||||
| 6 | pass | BUG | BUG | pass | Ambiguous colon in slice | 
| details | details | ||||
| 7 | pass | pass | pass | pass | Triple parens should be disambiguated | 
| 8 | pass | pass | pass | pass | Quadruple parens should be disambiguated | 
| 9 | pass | N-I | pass | pass | ExprSub $[] happens to behave the same on simple cases | 
| details | |||||
| 10 | pass | pass | pass | pass | Empty expression (( )) $(( )) | 
| 11 | pass | N-I | pass | pass | Empty expression for (( )) | 
| details | |||||
| 12 | pass | BUG | BUG | pass | Empty expression in ${a[@]: : } | 
| details | details | ||||
| 13 | ok | BUG | ok | pass | Empty expression a[] | 
| details | details | details | 
42 passed, 4 OK, 3 not implemented, 7 BUG, 0 failed, 0 timeouts, 0 cases skipped
| zsh | 0 Multiple right brackets inside expression stdout: stderr:  | 
| zsh | 3 Array index on LHS of assignment stdout: X 2 3stderr:  | 
| zsh | 4 Array index on LHS with indices stdout: X 2 3stderr:  | 
| mksh | 5 Slicing of string with expressions stdout: stderr: mksh: <stdin>[3]: ${s:zero}: bad substitution
 | 
| zsh | 5 Slicing of string with expressions stdout: stderr: zsh: unrecognized modifier `z'  | 
| mksh | 6 Ambiguous colon in slice stdout: 2stderr: mksh: <stdin>[3]: ${s: 0 < 1 ? 2 : 0 : 1}: bad substitution
 | 
| zsh | 6 Ambiguous colon in slice stdout: 2stderr: zsh: bad math expression: ':' expected  | 
| mksh | 9 ExprSub $[] happens to behave the same on simple cases stdout: $[1 + 2] $[3 * 4]stderr:  | 
| mksh | 11 Empty expression for (( )) stdout: stderr: mksh: <stdin>[1]: syntax error: '((' unexpected
 | 
| mksh | 12 Empty expression in ${a[@]: : } stdout: stderr: mksh: <stdin>[3]: ${a[@]: }: bad substitution
 | 
| zsh | 12 Empty expression in ${a[@]: : } stdout: slice a b c d e f status=0 slice status=0stderr: zsh: closing brace expected  | 
| bash | 13 Empty expression a[] stdout: status=1 1 2 3 status=1stderr: bash: line 3: a[]: bad array subscript
bash: line 7: ${a[]}: bad substitution
 | 
| mksh | 13 Empty expression a[] stdout: status=0 42 2 3 42 status=0stderr:  | 
| zsh | 13 Empty expression a[] stdout: stderr: zsh: not an identifier: a[]  |