| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 33 | 22 | 31 | 25 | 28 | 28 | 31 | 33 | 28 | 33 | |
| ok | 1 | 1 | 1 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | |
| N-I | 0 | 9 | 3 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| BUG | 1 | 3 | 0 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 0 | 0 | 10 | 0 | 7 | 4 | 2 | 7 | 2 | |
| total | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Unquoted words |
| 1 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Single-quoted |
| 2 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Two single-quoted parts |
| 3 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Unquoted and single quoted |
| 4 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | newline inside single-quoted string |
| 5 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Double-quoted |
| 6 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Mix of quotes in one word |
| 7 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Var substitution |
| 8 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Var substitution with braces |
| 9 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Var substitution with braces, quoted |
| 10 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Var length |
| 11 | pass | BUG | pass | FAIL | BUG | FAIL | pass | pass | pass | pass | Storing backslashes and then echoing them |
| details | details | details | details | ||||||||
| 12 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Backslash escapes |
| 13 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Backslash escapes inside double quoted string |
| 14 | pass | BUG | pass | FAIL | BUG | FAIL | pass | pass | pass | pass | C-style backslash escapes inside double quoted string |
| details | details | details | details | ||||||||
| 15 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Literal $ |
| 16 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Quoted Literal $ |
| 17 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | Line continuation |
| details | |||||||||||
| 18 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Line continuation inside double quotes |
| 19 | ok | ok | ok | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | $? split over multiple lines |
| details | details | details | details | details | details | details | details | ||||
| 20 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | Unterminated single quote |
| details | details | details | |||||||||
| 21 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | Unterminated double quote |
| details | details | details | |||||||||
| 22 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Semicolon |
| 23 | pass | BUG | pass | FAIL | BUG | FAIL | pass | pass | pass | pass | No tab escapes within single quotes |
| details | details | details | details | ||||||||
| 24 | pass | N-I | pass | pass | pass | pass | pass | pass | pass | pass | $'' |
| details | |||||||||||
| 25 | pass | N-I | pass | pass | pass | pass | pass | pass | pass | pass | $'' with quotes |
| details | |||||||||||
| 26 | pass | N-I | pass | pass | pass | pass | pass | pass | pass | pass | $'' with newlines |
| details | |||||||||||
| 27 | pass | N-I | pass | pass | pass | pass | FAIL | pass | FAIL | pass | $'' octal escapes don't have leading 0 |
| details | details | details | |||||||||
| 28 | pass | N-I | pass | pass | pass | pass | pass | pass | FAIL | pass | $'' octal escapes with fewer than 3 chars |
| details | details | ||||||||||
| 29 | pass | N-I | pass | FAIL | N-I | FAIL | FAIL | pass | FAIL | pass | OSH allows invalid backslashes |
| details | details | details | details | details | details | ||||||
| 30 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | YSH allows unquoted foo\ bar too |
| 31 | pass | N-I | N-I | FAIL | pass | pass | pass | pass | pass | pass | $"" is a synonym for "" |
| details | details | details | |||||||||
| 32 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | printf supports tabs |
| 33 | pass | N-I | N-I | FAIL | pass | pass | FAIL | pass | FAIL | FAIL | $'' supports \cA escape for Ctrl-A - mask with 0x1f |
| details | details | details | details | details | details | ||||||
| 34 | BUG | N-I | N-I | FAIL | pass | pass | FAIL | FAIL | FAIL | FAIL | \c' is an escape, unlike bash |
| details | details | details | details | details | details | details | details |
292 passed, 6 OK, 13 not implemented, 7 BUG, 32 failed, 0 timeouts, 0 cases skipped 2 failed under osh
| dash | 11 Storing backslashes and then echoing them stdout: \ \ \ \stderr: |
| zsh | 11 Storing backslashes and then echoing them [zsh stdout] Expected '\\ \\\\\n\\ \\\\\n' Got '\\ \\\n\\ \\\n' stdout: \ \ \ \stderr: |
| mksh | 11 Storing backslashes and then echoing them stdout: \ \ \ \stderr: |
| ksh | 11 Storing backslashes and then echoing them [ksh stdout] Expected '\\ \\\\\n\\ \\\\\n' Got '\\ \\\n\\ \\\n' stdout: \ \ \ \stderr: |
| dash | 14 C-style backslash escapes inside double quoted string stdout: stderr: |
| zsh | 14 C-style backslash escapes inside double quoted string [zsh stdout] Expected '\\a \\b\n' Got '\x07 \x08\n' stdout: stderr: |
| mksh | 14 C-style backslash escapes inside double quoted string stdout: stderr: |
| ksh | 14 C-style backslash escapes inside double quoted string [ksh stdout] Expected '\\a \\b\n' Got '\x07 \x08\n' stdout: stderr: |
| brush | 17 Line continuation [brush stdout] Expected 'foo$\n' Got 'foo\n' [brush status] Expected 0 Got 127 stdout: foostderr: [31merror:[39m command not found: $ |
| bash | 19 $? split over multiple lines stdout: 0stderr: |
| dash | 19 $? split over multiple lines stdout: 0stderr: |
| ash | 19 $? split over multiple lines stdout: 0stderr: |
| zsh | 19 $? split over multiple lines [zsh stdout] Expected '$?\n' Got '0\n' stdout: 0stderr: |
| mksh | 19 $? split over multiple lines stdout: 0stderr: |
| ksh | 19 $? split over multiple lines [ksh stdout] Expected '$?\n' Got '0\n' stdout: 0stderr: |
| sush | 19 $? split over multiple lines [sush stdout] Expected '$?\n' Got '0\n' stdout: 0stderr: |
| brush | 19 $? split over multiple lines [brush stdout] Expected '$?\n' Got '$\n' [brush status] Expected 0 Got 127 stdout: $stderr: [31merror:[39m command not found: ? |
| zsh | 20 Unterminated single quote [zsh status] Expected 2 Got 1 stdout: stderr: zsh: unmatched ' |
| mksh | 20 Unterminated single quote stdout: stderr: mksh: <stdin>[2]: no closing quote |
| ksh | 20 Unterminated single quote [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: no closing quote |
| zsh | 21 Unterminated double quote [zsh status] Expected 2 Got 1 stdout: stderr: zsh: unmatched " |
| mksh | 21 Unterminated double quote stdout: stderr: mksh: <stdin>[2]: no closing quote |
| ksh | 21 Unterminated double quote [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: no closing quote |
| dash | 23 No tab escapes within single quotes stdout: a bstderr: |
| zsh | 23 No tab escapes within single quotes [zsh stdout] Expected 'a\\tb\n' Got 'a\tb\n' stdout: a bstderr: |
| mksh | 23 No tab escapes within single quotes stdout: a bstderr: |
| ksh | 23 No tab escapes within single quotes [ksh stdout] Expected 'a\\tb\n' Got 'a\tb\n' stdout: a bstderr: |
| dash | 24 $'' stdout: $foostderr: |
| dash | 25 $'' with quotes stdout: stderr: dash: 2: Syntax error: Unterminated quoted string |
| dash | 26 $'' with newlines stdout: $col1 col2 col3stderr: |
| dash | 27 $'' octal escapes don't have leading 0 stdout: $ 001 $ 377stderr: |
| toysh | 27 $'' octal escapes don't have leading 0 [toysh stdout] Expected ' 001 377\n' Got ' 001 303 277\n' stdout: 001 303 277stderr: |
| brush | 27 $'' octal escapes don't have leading 0 [brush stdout] Expected ' 001 377\n' Got ' 001 \\ 3 7 7\n' stdout: 001 \ 3 7 7stderr: |
| dash | 28 $'' octal escapes with fewer than 3 chars stdout: $ 001 \t \t I \nstderr: |
| brush | 28 $'' octal escapes with fewer than 3 chars [brush stdout] Expected ' 001 \\t \\t I \\n\n' Got ' \\ 1 \\ 1 1 \\ 1 1 \\ 1 1 1 \\n\n' stdout: \ 1 \ 1 1 \ 1 1 \ 1 1 1 \nstderr: |
| dash | 29 OSH allows invalid backslashes stdout: stderr: |
| zsh | 29 OSH allows invalid backslashes [zsh stdout] Expected '\\uZ \\u{03bc \\z\n' Got '\x00Z \x00{03bc z\n' stdout: |