1 |
#### Lower Case with , and ,, |
2 |
x='ABC DEF' |
3 |
echo ${x,} |
4 |
echo ${x,,} |
5 |
echo empty=${empty,} |
6 |
echo empty=${empty,,} |
7 |
## STDOUT: |
8 |
aBC DEF |
9 |
abc def |
10 |
empty= |
11 |
empty= |
12 |
## END |
13 |
|
14 |
#### Upper Case with ^ and ^^ |
15 |
x='abc def' |
16 |
echo ${x^} |
17 |
echo ${x^^} |
18 |
echo empty=${empty^} |
19 |
echo empty=${empty^^} |
20 |
## STDOUT: |
21 |
Abc def |
22 |
ABC DEF |
23 |
empty= |
24 |
empty= |
25 |
## END |
26 |
|
27 |
#### Lower Case with constant string (VERY WEIRD) |
28 |
x='AAA ABC DEF' |
29 |
echo ${x,A} |
30 |
echo ${x,,A} # replaces every A only? |
31 |
## STDOUT: |
32 |
aAA ABC DEF |
33 |
aaa aBC DEF |
34 |
## END |
35 |
|
36 |
#### Lower Case glob |
37 |
x='ABC DEF' |
38 |
echo ${x,[d-f]} |
39 |
echo ${x,,[d-f]} # This seems buggy, it doesn't include F? |
40 |
## STDOUT: |
41 |
ABC DEF |
42 |
ABC deF |
43 |
## END |
44 |
|
45 |
#### ${x@Q} |
46 |
x="FOO'BAR spam\"eggs" |
47 |
eval "new=${x@Q}" |
48 |
test "$x" = "$new" && echo OK |
49 |
## STDOUT: |
50 |
OK |
51 |
## END |
52 |
|
53 |
#### ${!prefix@} ${!prefix*} yields sorted array of var names |
54 |
ZOO=zoo |
55 |
ZIP=zip |
56 |
ZOOM='one two' |
57 |
Z='three four' |
58 |
|
59 |
z=lower |
60 |
|
61 |
argv.py ${!Z*} |
62 |
argv.py ${!Z@} |
63 |
argv.py "${!Z*}" |
64 |
argv.py "${!Z@}" |
65 |
for i in 1 2; do argv.py ${!Z*} ; done |
66 |
for i in 1 2; do argv.py ${!Z@} ; done |
67 |
for i in 1 2; do argv.py "${!Z*}"; done |
68 |
for i in 1 2; do argv.py "${!Z@}"; done |
69 |
## STDOUT: |
70 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
71 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
72 |
['Z ZIP ZOO ZOOM'] |
73 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
74 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
75 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
76 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
77 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
78 |
['Z ZIP ZOO ZOOM'] |
79 |
['Z ZIP ZOO ZOOM'] |
80 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
81 |
['Z', 'ZIP', 'ZOO', 'ZOOM'] |
82 |
## END |
83 |
|
84 |
#### ${!prefix@} matches var name (regression) |
85 |
hello1=1 hello2=2 hello3=3 |
86 |
echo ${!hello@} |
87 |
hello=() |
88 |
echo ${!hello@} |
89 |
## STDOUT: |
90 |
hello1 hello2 hello3 |
91 |
hello hello1 hello2 hello3 |
92 |
## END |
93 |
|
94 |
#### ${var@a} for attributes |
95 |
array=(one two) |
96 |
echo ${array@a} |
97 |
declare -r array=(one two) |
98 |
echo ${array@a} |
99 |
declare -rx PYTHONPATH=hi |
100 |
echo ${PYTHONPATH@a} |
101 |
|
102 |
# bash and osh differ here |
103 |
#declare -rxn x=z |
104 |
#echo ${x@a} |
105 |
## STDOUT: |
106 |
a |
107 |
ar |
108 |
rx |
109 |
## END |
110 |
|
111 |
#### ${var@a} error conditions |
112 |
echo [${?@a}] |
113 |
## STDOUT: |
114 |
[] |
115 |
## END |