]>
Commit | Line | Data |
---|---|---|
8868edaf CR |
1 | # This program is free software: you can redistribute it and/or modify |
2 | # it under the terms of the GNU General Public License as published by | |
3 | # the Free Software Foundation, either version 3 of the License, or | |
4 | # (at your option) any later version. | |
5 | # | |
6 | # This program is distributed in the hope that it will be useful, | |
7 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
8 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
9 | # GNU General Public License for more details. | |
10 | # | |
11 | # You should have received a copy of the GNU General Public License | |
12 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
13 | # | |
a0c0a00f CR |
14 | # new framework for parameter transformations, post bash-4.3 |
15 | ||
16 | printf "<%s>" "${x@Q}" ; echo | |
17 | printf "<%s>" "${x@E}" ; echo | |
18 | printf "<%s>" "${x@P}" ; echo | |
19 | printf "<%s>" "${x@A}" ; echo | |
20 | ||
21 | x="ab 'cd' ef" | |
22 | printf "<%s> " "${x@Q}" ; echo | |
23 | ||
24 | printf "<%s>" "${x@C}" | |
25 | ||
26 | # if unquoted, normal word splitting happens | |
27 | set -- ab 'cd ef' '' gh | |
28 | printf "<%s> " "${@@Q}" ; echo | |
29 | printf "<%s> " "${*@Q}" ; echo | |
30 | printf "<%s> " ${@@Q} ; echo | |
31 | printf "<%s> " ${*@Q} ; echo | |
32 | ||
33 | y[0]=4 | |
34 | y[1]='ab cd' | |
35 | ||
36 | printf "<%s> " "${y[1]@Q}" ; echo | |
37 | printf "<%s> " "${y[@]@Q}" ; echo # mksh doesn't like @ or * or arrays subscripted with them | |
38 | ||
39 | printf "<%s> " "${z@Q}" ; echo # empty string? | |
40 | ||
41 | recho ${z@Q} # this disappears | |
42 | ||
43 | # | |
44 | HOST=host | |
45 | SHELL_LEVEL=2 | |
46 | NPS1='\[\]${HOST}($SHELL_LEVEL)[\v]\$ ' | |
47 | ||
48 | recho "${NPS1@P}" | |
49 | ||
50 | # | |
51 | D=' \t\n' | |
52 | printf "<%s>" "${D@E}" ; echo | |
53 | printf "<%s>" "${D@Q}" ; echo | |
54 | ||
55 | E=$' \t\n' | |
56 | printf "<%s>" "${E@E}" ; echo | |
57 | printf "<%s>" "${E@Q}" ; echo | |
58 | ||
59 | declare x | |
60 | declare -r x="ab 'cd' ef" | |
61 | printf "%s" "${x@A}" ; echo | |
62 | ||
63 | set -- ab 'cd ef' '' gh | |
64 | printf "%s " "${@@A}" ; echo | |
65 | ||
66 | A=( "$@" ) | |
67 | printf "%s " "${A[@]@A}" ; echo | |
68 | B=() | |
69 | printf "%s " "${B[@]@A}" ; echo | |
70 | ||
71 | unset A | |
72 | declare -A A | |
73 | A=( [one]=1 [two]='b c' [three]='' [four]=de ) | |
74 | printf "%s " "${A[@]@A}" ; echo | |
75 | ||
76 | unset X | |
77 | declare X | |
78 | declare -r X="ab 'cd' ef" | |
79 | printf "%s" "${X@a}" ; echo | |
80 | ||
81 | set -- 1 2 3 4 | |
82 | ||
83 | unset A | |
84 | A=( "$@" ) | |
85 | printf "%s " "${A@a}" ; echo | |
86 | ||
87 | unset A | |
88 | declare -A A | |
89 | A=( [one]=1 [two]='b c' [three]='' [four]=de ) | |
90 | printf "%s " "${A@a}" ; echo | |
91 | ||
92 | declare -ir Y=0 | |
93 | printf "%s" "${Y@a}" ; echo | |
94 | ||
95 | # make sure we still handle ${#@} and ${@} as posix requires | |
96 | set -- a b c d e | |
97 | echo ${@} | |
98 | echo ${#@} | |
99 | echo a${#@}b | |
d233b485 CR |
100 | |
101 | # new feature in bash-5.0: display attributes of even unset variables | |
102 | unset -v foo | |
103 | ||
104 | declare -i foo | |
105 | echo ${foo@a} | |
106 | ||
107 | declare -p foo | |
108 | ||
109 | unset foo | |
110 | declare -A foo | |
111 | echo ${foo@a} | |
112 | ||
113 | declare -p foo |