declare -A BASH_ALIASES=() declare -A BASH_CMDS=() declare -A fluff declare -A BASH_ALIASES=() declare -A BASH_CMDS=() declare -A fluff=([foo]="one" [bar]="two" ) declare -A fluff=([foo]="one" [bar]="two" ) declare -A fluff=([bar]="two" ) declare -A fluff=([bar]="newval" [qux]="assigned" ) ./assoc.tests: line 26: chaff: four: must use subscript when assigning associative array declare -A BASH_ALIASES=() declare -A BASH_CMDS=() declare -Ai chaff=([zero]="5" [one]="10" ) declare -Ar waste=([lineno]="28" [source]="./assoc.tests" [version]="4.0-devel" [pid]="42134" ) declare -A wheat=([two]="b" [three]="c" [zero]="0" [one]="a" ) declare -A chaff=(["hello world"]="flip" [zero]="5" [one]="10" ) ./assoc.tests: line 38: waste: readonly variable ./assoc.tests: line 39: unset: waste: cannot unset: readonly variable ./assoc.tests: line 40: chaff[*]: bad array subscript ./assoc.tests: line 41: [*]=12: invalid associative array key declare -A chaff=(["hello world"]="flip" [one]="a" ) flip argv[1] = argv[2] = argv[3] = argv[4] = argv[1] = argv[2] = argv[3] = argv[1] = argv[2] = argv[3] = argv[4] = argv[1] = ./assoc.tests: line 58: declare: chaff: cannot destroy array variables in this way ./assoc.tests: line 60: chaff[*]: bad array subscript ./assoc.tests: line 61: [*]=12: invalid associative array key declare -A wheat=(["foo bar"]="qux qix" [six]="6" ) argv[1] = argv[2] = argv[1] = declare -A wheat=(["foo bar"]="qux qix" [six]="6" ) argv[1] = <2> argv[1] = <7> argv[1] = argv[2] = argv[3] = argv[1] = argv[1] = <16> argv[1] = <16> argv[1] = argv[2] = <6> argv[1] = argv[2] = argv[3] = argv[1] = argv[2] = 8 /sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin sbin bin bin ucb bin . sbin bin bin / / / / / / / / argv[1] = argv[1] = argv[1] = argv[1] = 8 /sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin sbin bin bin ucb bin . sbin bin / / / / / / / 8 4 -- /bin ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin \sbin \usr/bin \bin \usr/ucb \usr/local/bin . \usr/sbin \bin \sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin \sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin ([a]=1) foo qux /usr/sbin/foo /usr/local/bin/qux hits command 0 /sbin/blat 0 /usr/sbin/foo 0 /bin/sh 0 /usr/local/bin/qux blat foo sh qux /sbin/blat /usr/sbin/foo /bin/sh /usr/local/bin/qux foo qux argv[1] = argv[2] = argv[3] = <-l> alias blat='cd /blat ; echo $PWD' alias foo='/usr/sbin/foo' alias qux='/usr/local/bin/qux -l' alias sh='/bin/bash --login -o posix' blat foo sh qux argv[1] = argv[2] = argv[3] = argv[4] = outside: outside declare -A BASH_ALIASES=() declare -A BASH_CMDS=() declare -A afoo=(["foo bar"]="foo quux" [six]="six" ) argv[1] = argv[2] = argv[3] = outside 2: outside argv[1] = argv[1] = <> argv[2] = argv[3] = <> argv[4] = argv[1] = argv[1] = <> argv[2] = argv[3] = <> argv[4] = argv[1] = argv[1] = <> argv[2] = argv[3] = <> argv[4] = argv[1] = argv[1] = <> argv[2] = argv[3] = <> argv[4] = argv[1] = argv[1] = <> argv[2] = argv[3] = <> argv[4] = abc def def ./assoc5.sub: line 13: declare: `myarray[foo[bar]=bleh': not a valid identifier bleh def abc myarray=([foo]="bleh" ["]"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" ) 123 myarray=([foo]="bleh" ["]"]="def" ["a]=test2;#a"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) bar'bie doll declare -A foo=(["bar'bie"]="doll" ) bar'bie doll declare -A foo=(["bar'bie"]="doll" ) bar'bie doll declare -A foo=(["bar'bie"]="doll" ) bar'bie doll declare -A foo=(["bar'bie"]="doll" ) bar'bie doll declare -A foo=(["bar'bie"]="doll" ) bar$bie doll declare -A foo=(["bar\$bie"]="doll" ) bar[bie doll declare -A foo=(["bar[bie"]="doll" ) bar`bie doll declare -A foo=(["bar\`bie"]="doll" ) bar\]bie doll declare -A foo=(["bar\\]bie"]="doll" ) bar${foo}bie doll declare -A foo=(["bar\${foo}bie"]="doll" ) bar after printf after use: 0 declare -A assoc=([0]="assoc" ) assoc declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" ) declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" ) declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" ) declare -A b=(["]"]="" ["\`"]="" ) declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) ./assoc9.sub: line 23: unset: `dict[']': not a valid identifier ./assoc9.sub: line 23: unset: `dict["]': not a valid identifier ./assoc9.sub: line 23: unset: `dict[\]': not a valid identifier ./assoc9.sub: line 23: unset: `dict[`]': not a valid identifier declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) declare -A dict=() 4 4 a[$b]= 5 declare -A a=(["80's"]="Depeche Mode" ) ./assoc9.sub: line 71: read: `a[80's]': not a valid identifier declare -A a declare -A a=(["80's"]="Depeche Mode" ) ./assoc9.sub: line 83: printf: `a[80's]': not a valid identifier declare -A a declare -A a=(["80's"]="Depeche Mode" ) 6 1 1+5 declare -A a=(["\$(date >&2)"]="5" ) declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) ./assoc10.sub: line 1: declare: a: cannot convert indexed to associative array f: declare -a a ./assoc10.sub: line 4: declare: a: cannot convert associative to indexed array f: declare -A a f: declare -a a main: declare -- a="7" f: declare -A a main: declare -- a="42"