1 #!/bin/bash
2 #
3 # Tests for the blog.
4 #
5 # Fun game: try to come up with an expression that behaves differently on ALL
6 # FOUR shells.
7
8 ### ${##}
9 set -- $(seq 25)
10 echo ${##}
11 # stdout: 2
12
13 ### ${###}
14 set -- $(seq 25)
15 echo ${###}
16 # stdout: 25
17
18 ### ${####}
19 set -- $(seq 25)
20 echo ${####}
21 # stdout: 25
22
23 ### ${##2}
24 set -- $(seq 25)
25 echo ${##2}
26 # stdout: 5
27
28 ### ${###2}
29 set -- $(seq 25)
30 echo ${###2}
31 # stdout: 5
32 # BUG mksh stdout: 25
33
34 ### ${1####}
35 set -- '####'
36 echo ${1####}
37 # stdout: ##
38
39 ### ${1#'###'}
40 set -- '####'
41 echo ${1#'###'}
42 # stdout: #
43
44 ### ${#1#'###'}
45 set -- '####'
46 echo ${#1#'###'}
47 # dash and zsh accept; mksh and bash don't
48 # OK dash stdout: 4
49 # OK zsh stdout: 1
50 # N-I bash/mksh stdout-json: ""