diff options
Diffstat (limited to 'tests/assoc11.sub')
-rw-r--r-- | tests/assoc11.sub | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/assoc11.sub b/tests/assoc11.sub new file mode 100644 index 0000000..13111a5 --- /dev/null +++ b/tests/assoc11.sub @@ -0,0 +1,90 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# these tests were previously in array19.sub, but they are acceptable syntax now + +declare -A a +declare a='(1 2 3)' +declare -p a +unset a + +declare -A foo + +v1='spa ces' +v2=@ + +foo=(a 1 b 2 c 3 d 4 ) +declare -p foo +echo foo=\( ${foo[@]@K} \) + +foo=('a b' 1 "$v1" 2 "$v2" 3 'holy hell this works' 4 \\ 5) +declare -p foo +echo foo=\( echo ${foo[@]@K} \) + +foo=( "" null ) + +foo=('a]a' abc ']' def $(echo 'foo[bar') bleh \; semicolon a=b assignment) +declare -p foo +echo foo=\( ${foo[@]@K} \) + +foo=('`' backquote '"' dquote "'" squote \\ bslash) +declare -p foo +echo foo=\( ${foo[@]@K} \) + +bar='a]=test1;#a' +foo=( $bar 123 bar\"bie doll bar]bie doll ) +declare -p foo +echo foo=\( ${foo[@]@K} \) + +func() +{ + declare -A inside=(a 1 b 2 c 3) + declare -p inside + echo inside=\( ${inside[@]@K} \) +} +func + +loaddict() +{ + dict=( '"' dquote '`' bquote "'" squote '\' bslash) + dict+=( '$' dol @ at * star \{ lbrace \} rbrace ? quest) + + declare -p dict + echo dict=\( ${dict[@]@K} \) +} +declare -A dict +loaddict + +foo=(one 1 two) +declare -p foo +echo foo=\( ${foo[@]@K} \) + +typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbrace ) +echo ${a[@]} +declare -p a + +echo ${a[@]@K} +echo ${a[@]@A} + +eval "${a[@]@A}" +declare -p a + +eval "a=( ${a[@]@K} )" +declare -p a + +unset a foo +readonly -A foo=( one 1 two 2 three 3 ) + +export foo +declare -p foo +declare foo+=( seven 7 eight 8 ) |