1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/bin/sh
# This is a TO DO, but irrelevant to this test case:
foo=(foo bar moo BASH ISM)
n=1
echo BASHISM ${foo[1]%r}
echo BASHISM ${foo[$n]%r}
echo BASHISM ${foo[*]%o}
echo BASHISM ${foo[@]%o}
echo BASHISM ${foo[1]%%r}
echo BASHISM ${foo[$n]%%r}
echo BASHISM ${foo[*]%%o}
echo BASHISM ${foo[@]%%o}
echo BASHISM ${foo[1]#*a}
echo BASHISM ${foo[$n]#*a}
echo BASHISM ${foo[*]#*o}
echo BASHISM ${foo[@]#*o}
echo BASHISM ${foo[1]##*a}
echo BASHISM ${foo[$n]##*a}
echo BASHISM ${foo[*]##*o}
echo BASHISM ${foo[@]##*o}
echo BASHISM ${#foo[1]}
echo BASHISM ${#foo[$n]}
echo BASHISM ${#foo[*]}
echo BASHISM ${#foo[@]}
# Technically, there are two bashisms here, but I'm happy if it at
# least matches one. The regexes become more complex without real gain
# otherwise. (hence the "BASH ISMS", with the extra space)
echo BASHISM BASH ISMS ${foo[1]^*a}
echo BASHISM BASH ISMS ${foo[$n]^*a}
echo BASHISM BASH ISMS ${foo[*]^*o}
echo BASHISM BASH ISMS ${foo[@]^*o}
echo BASHISM BASH ISMS ${foo[1]^^*a}
echo BASHISM BASH ISMS ${foo[$n]^^*a}
echo BASHISM BASH ISMS ${foo[*]^^*o}
echo BASHISM BASH ISMS ${foo[@]^^*o}
echo BASHISM BASH ISMS ${foo[1],*a}
echo BASHISM BASH ISMS ${foo[$n],*a}
echo BASHISM BASH ISMS ${foo[*],*a}
echo BASHISM BASH ISMS ${foo[@],*a}
echo BASHISM BASH ISMS ${foo[1],,*a}
echo BASHISM BASH ISMS ${foo[$n],,*a}
echo BASHISM BASH ISMS ${foo[*],,*a}
echo BASHISM BASH ISMS ${foo[@],,*a}
echo BASHISM BASH ISMS ${foo[1]/a/R}
echo BASHISM BASH ISMS ${foo[$n]/a/R}
echo BASHISM BASH ISMS ${foo[*]/a/R}
echo BASHISM BASH ISMS ${foo[@]/a/R}
|