1 |
#!/usr/bin/env 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 |
## N-I osh stdout-json: "" |
18 |
## N-I osh status: 2 |
19 |
|
20 |
#### ${####} |
21 |
set -- $(seq 25) |
22 |
echo ${####} |
23 |
## stdout: 25 |
24 |
## N-I osh stdout-json: "" |
25 |
## N-I osh status: 2 |
26 |
|
27 |
#### ${##2} |
28 |
set -- $(seq 25) |
29 |
echo ${##2} |
30 |
## stdout: 5 |
31 |
## N-I osh stdout-json: "" |
32 |
## N-I osh status: 2 |
33 |
|
34 |
#### ${###2} |
35 |
set -- $(seq 25) |
36 |
echo ${###2} |
37 |
## stdout: 5 |
38 |
## BUG mksh stdout: 25 |
39 |
## N-I osh stdout-json: "" |
40 |
## N-I osh status: 2 |
41 |
|
42 |
#### ${1####} |
43 |
set -- '####' |
44 |
echo ${1####} |
45 |
## stdout: ## |
46 |
|
47 |
#### ${1#'###'} |
48 |
set -- '####' |
49 |
echo ${1#'###'} |
50 |
## stdout: # |
51 |
|
52 |
#### ${#1#'###'} |
53 |
set -- '####' |
54 |
echo ${#1#'###'} |
55 |
# dash and zsh accept; mksh/bash/osh don't. |
56 |
## status: 2 |
57 |
## stdout-json: "" |
58 |
## OK dash/zsh status: 0 |
59 |
## OK dash stdout: 4 |
60 |
## OK zsh stdout: 1 |
61 |
## N-I bash/mksh status: 1 |