| case | dash | bash | mksh | zsh | osh | osh_ALT | description |
| 0 | pass | pass | pass | pass | pass | pass | ${##} |
| 1 | pass | pass | pass | pass | N-I | N-I | ${###} |
| details | details | ||||||
| 2 | pass | pass | pass | pass | N-I | N-I | ${####} |
| details | details | ||||||
| 3 | pass | pass | pass | pass | N-I | N-I | ${##2} |
| details | details | ||||||
| 4 | pass | pass | BUG | pass | N-I | N-I | ${###2} |
| details | details | details | |||||
| 5 | pass | pass | pass | pass | pass | pass | ${1####} |
| 6 | pass | pass | pass | pass | pass | pass | ${1#'###'} |
| 7 | ok | N-I | N-I | ok | pass | pass | ${#1#'###'} |
| details | details | details | details |
35 passed, 2 ok, 10 known unimplemented, 1 known bugs, 0 failed, 0 skipped
| osh | 1 ${###} stdout: stderr: Line 2 of '<stdin>'
echo ${###}
^
Expected } after length expression, got (token id:VOp1_Pound val:"#" span_id:15)
---
Line 2 of '<stdin>'
echo ${###}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh_ALT | 1 ${###} stdout: stderr: Line 2 of '<stdin>'
echo ${###}
^
Expected } after length expression, got (token id:VOp1_Pound val:"#" span_id:15)
---
Line 2 of '<stdin>'
echo ${###}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh | 2 ${####} stdout: stderr: Line 2 of '<stdin>'
echo ${####}
^~
Expected } after length expression, got (token id:VOp1_DPound val:"##" span_id:15)
---
Line 2 of '<stdin>'
echo ${####}
^~
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh_ALT | 2 ${####} stdout: stderr: Line 2 of '<stdin>'
echo ${####}
^~
Expected } after length expression, got (token id:VOp1_DPound val:"##" span_id:15)
---
Line 2 of '<stdin>'
echo ${####}
^~
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh | 3 ${##2} stdout: stderr: Line 2 of '<stdin>'
echo ${##2}
^
Expected } after length expression, got (token id:Unknown_Tok val:2 span_id:15)
---
Line 2 of '<stdin>'
echo ${##2}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh_ALT | 3 ${##2} stdout: stderr: Line 2 of '<stdin>'
echo ${##2}
^
Expected } after length expression, got (token id:Unknown_Tok val:2 span_id:15)
---
Line 2 of '<stdin>'
echo ${##2}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| mksh | 4 ${###2} stdout: 25stderr: |
| osh | 4 ${###2} stdout: stderr: Line 2 of '<stdin>'
echo ${###2}
^
Expected } after length expression, got (token id:VOp1_Pound val:"#" span_id:15)
---
Line 2 of '<stdin>'
echo ${###2}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| osh_ALT | 4 ${###2} stdout: stderr: Line 2 of '<stdin>'
echo ${###2}
^
Expected } after length expression, got (token id:VOp1_Pound val:"#" span_id:15)
---
Line 2 of '<stdin>'
echo ${###2}
^
Error reading command word
---
Line 0 of '<unknown>'
<no position info for token>
Error parsing AndOr in ParseCommandTerm
---
|
| dash | 7 ${#1#'###'} stdout: 4stderr: |
| bash | 7 ${#1#'###'} stdout: stderr: /bin/bash: line 2: ${#1#'###'}: bad substitution
|
| mksh | 7 ${#1#'###'} stdout: stderr: /bin/mksh: <stdin>[2]: ${#1#"###"}: bad substitution
|
| zsh | 7 ${#1#'###'} stdout: 1stderr: |