1 #### Lower Case with , and ,,
2 x='ABC DEF'
3 echo ${x,}
4 echo ${x,,}
5 ## STDOUT:
6 aBC DEF
7 abc def
8 ## END
9
10 #### Upper Case with ^ and ^^
11 x='abc def'
12 echo ${x^}
13 echo ${x^^}
14 ## STDOUT:
15 Abc def
16 ABC DEF
17 ## END
18
19 #### Lower Case with constant string (VERY WEIRD)
20 x='AAA ABC DEF'
21 echo ${x,A}
22 echo ${x,,A} # replaces every A only?
23 ## STDOUT:
24 aAA ABC DEF
25 aaa aBC DEF
26 ## END
27
28 #### Lower Case glob
29 x='ABC DEF'
30 echo ${x,[d-f]}
31 echo ${x,,[d-f]} # This seems buggy, it doesn't include F?
32 ## STDOUT:
33 ABC DEF
34 ABC deF
35 ## END
36
37 #### ${x@Q}
38 x="FOO'BAR spam\"eggs"
39 eval "new=${x@Q}"
40 test "$x" = "$new" && echo OK
41 ## STDOUT:
42 OK
43 ## END
44
45 #### ${!prefix@} ${!prefix*} yields sorted array of var names
46 ZOO=zoo
47 ZIP=zip
48 ZOOM='one two'
49 Z='three four'
50
51 z=lower
52
53 argv.py ${!Z*}
54 argv.py ${!Z@}
55 argv.py "${!Z*}"
56 argv.py "${!Z@}"
57 ## STDOUT:
58 ['Z', 'ZIP', 'ZOO', 'ZOOM']
59 ['Z', 'ZIP', 'ZOO', 'ZOOM']
60 ['Z ZIP ZOO ZOOM']
61 ['Z', 'ZIP', 'ZOO', 'ZOOM']
62 ## END
63