var-op-strip () { sh-spec spec/var-op-strip.test.sh ${REF_SHELLS[@]} $ZSH $BUSYBOX_ASH $OSH_LIST "$@" }
spec test index / oilshell.org
| status | dash | bash | mksh | zsh | ash | osh | |
| pass | 21 | 29 | 20 | 23 | 22 | 29 | |
| ok | 0 | 0 | 2 | 1 | 0 | 0 | |
| N-I | 6 | 0 | 5 | 1 | 5 | 0 | |
| BUG | 2 | 0 | 2 | 4 | 2 | 0 | |
| total | 29 | 29 | 29 | 29 | 29 | 29 | |
| case | dash | bash | mksh | zsh | ash | osh | description | 
| 0 | pass | pass | pass | pass | pass | pass | Remove const suffix | 
| 1 | pass | pass | pass | pass | pass | pass | Remove const prefix | 
| 2 | N-I | pass | N-I | pass | N-I | pass | Remove const suffix is vectorized on user array | 
| details | details | details | |||||
| 3 | N-I | pass | N-I | pass | N-I | pass | Remove const suffix is vectorized on $@ array | 
| details | details | details | |||||
| 4 | pass | pass | pass | pass | pass | pass | Remove const suffix from undefined | 
| 5 | pass | pass | pass | pass | pass | pass | Remove shortest glob suffix | 
| 6 | pass | pass | pass | pass | pass | pass | Remove longest glob suffix | 
| 7 | pass | pass | pass | pass | pass | pass | Remove shortest glob prefix | 
| 8 | pass | pass | pass | pass | pass | pass | Remove longest glob prefix | 
| 9 | pass | pass | N-I | pass | pass | pass | Strip char class | 
| details | |||||||
| 10 | BUG | pass | BUG | BUG | BUG | pass | Strip unicode prefix | 
| details | details | details | details | ||||
| 11 | pass | pass | pass | pass | pass | pass | Bug fix: Test that you can remove everything with glob | 
| 12 | pass | pass | pass | pass | pass | pass | Test that you can remove everything with const | 
| 13 | N-I | pass | N-I | pass | N-I | pass | Prepend using replacement of # | 
| details | details | details | |||||
| 14 | N-I | pass | N-I | pass | N-I | pass | Append using replacement of % | 
| details | details | details | |||||
| 15 | pass | pass | ok | BUG | pass | pass | strip unquoted and quoted [ | 
| details | details | ||||||
| 16 | pass | pass | ok | ok | pass | pass | strip unquoted and quoted [] | 
| details | details | ||||||
| 17 | pass | pass | pass | pass | pass | pass | strip unquoted and quoted ? | 
| 18 | pass | pass | pass | pass | pass | pass | strip unquoted and quoted [a] | 
| 19 | N-I | pass | pass | pass | pass | pass | Nested % and # operators (bug reported by Crestwave) | 
| details | |||||||
| 20 | pass | pass | pass | BUG | pass | pass | strip * (bug regression) | 
| details | |||||||
| 21 | pass | pass | pass | pass | pass | pass | strip ? | 
| 22 | pass | pass | pass | pass | pass | pass | strip all | 
| 23 | pass | pass | pass | pass | pass | pass | strip none | 
| 24 | BUG | pass | BUG | pass | BUG | pass | strip all unicode | 
| details | details | details | |||||
| 25 | pass | pass | pass | pass | pass | pass | strip none unicode | 
| 26 | pass | pass | pass | BUG | pass | pass | Strip Right Brace (#702) | 
| details | |||||||
| 27 | pass | pass | pass | pass | pass | pass | \(\) in pattern (regression) | 
| 28 | N-I | pass | pass | N-I | N-I | pass | extglob in pattern | 
| details | details | details | 
144 passed, 3 OK, 17 not implemented, 10 BUG, 0 failed, 0 timeouts, 0 cases skipped
| dash | 2 Remove const suffix is vectorized on user array stdout: stderr: dash: 1: Syntax error: "(" unexpected
 | 
| mksh | 2 Remove const suffix is vectorized on user array stdout: stderr: mksh: <stdin>[2]: ${a[@]%a}: bad substitution
 | 
| ash | 2 Remove const suffix is vectorized on user array stdout: stderr: ash: syntax error: unexpected "("
 | 
| dash | 3 Remove const suffix is vectorized on $@ array stdout: ['1a', '2a', '3']stderr:  | 
| mksh | 3 Remove const suffix is vectorized on $@ array stdout: stderr: mksh: <stdin>[2]: ${@%a}: bad substitution
 | 
| ash | 3 Remove const suffix is vectorized on $@ array stdout: ['1a', '2a', '3']stderr:  | 
| mksh | 9 Strip char class stdout: abcstderr:  | 
| dash | 10 Strip unicode prefix stdout: '\xbc-\n\xbc-\n-\xce\n-\xce\n'stderr:  | 
| mksh | 10 Strip unicode prefix stdout: '\xbc-\n\xbc-\n-\xce\n-\xce\n'stderr:  | 
| zsh | 10 Strip unicode prefix stdout: stderr:  | 
| ash | 10 Strip unicode prefix stdout: '\xbc-\n\xbc-\n-\xce\n-\xce\n'stderr:  | 
| dash | 13 Prepend using replacement of # stdout: stderr: dash: 1: Syntax error: "(" unexpected
 | 
| mksh | 13 Prepend using replacement of # stdout: stderr: mksh: <stdin>[2]: ${array[@]/#/prefix-}: bad substitution
 | 
| ash | 13 Prepend using replacement of # stdout: stderr: ash: syntax error: unexpected "("
 | 
| dash | 14 Append using replacement of % stdout: stderr: dash: 1: Syntax error: "(" unexpected
 | 
| mksh | 14 Append using replacement of % stdout: stderr: mksh: <stdin>[2]: ${array[@]/%/-suffix}: bad substitution
 | 
| ash | 14 Append using replacement of % stdout: stderr: ash: syntax error: unexpected "("
 | 
| mksh | 15 strip unquoted and quoted [ stdout: [foo] foo] [foo] foo]stderr:  | 
| zsh | 15 strip unquoted and quoted [ stdout: stderr: zsh: bad pattern: [  | 
| mksh | 16 strip unquoted and quoted [] stdout: []foo[] foo[] []foo[] foo[]stderr:  | 
| zsh | 16 strip unquoted and quoted [] stdout: []foo[] foo[] []foo[] foo[]stderr:  | 
| dash | 19 Nested % and # operators (bug reported by Crestwave) stdout: ['\\n'] ['$\\n'] ['$'] [''] ['a'] ['a']stderr:  | 
| zsh | 20 strip * (bug regression) stdout: ['abc'] [''] ['ab'] ['']stderr:  | 
| dash | 24 strip all unicode stdout: μabcμ μabcμ μabcμ μabcμstderr:  | 
| mksh | 24 strip all unicode stdout: μabcμ μabcμ μabcμ μabcμstderr:  | 
| ash | 24 strip all unicode stdout: μabcμ μabcμ μabcμ μabcμstderr:  | 
| zsh | 26 Strip Right Brace (#702) stdout: 1 $foo 2 10 }} 11 12 }'} 13stderr:  | 
| dash | 28 extglob in pattern stdout: stderr:  | 
| zsh | 28 extglob in pattern stdout: stderr:  | 
| ash | 28 extglob in pattern stdout: stderr:  |