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