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=([qux]="assigned" [bar]="newval" ) ./assoc.tests: line 39: chaff: four: must use subscript when assigning associative array declare -A BASH_ALIASES=() declare -A BASH_CMDS=() declare -Ai chaff=([one]="10" [zero]="5" ) declare -Ar waste=([pid]="42134" [lineno]="41" [source]="./assoc.tests" [version]="4.0-devel" ) declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" ) declare -A chaff=(["hello world"]="flip" [one]="10" [zero]="5" ) ./assoc.tests: line 51: waste: readonly variable ./assoc.tests: line 52: unset: waste: cannot unset: readonly variable ./assoc.tests: line 53: chaff[*]: bad array subscript ./assoc.tests: line 54: [*]=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 71: declare: chaff: cannot destroy array variables in this way ./assoc.tests: line 73: chaff[*]: bad array subscript ./assoc.tests: line 74: [*]=12: invalid associative array key declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) argv[1] = argv[2] = argv[1] = declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) argv[1] = <2> argv[1] = <7> argv[1] = argv[2] = argv[3] = argv[1] = argv[1] = <16> argv[1] = <16> argv[1] = <6> argv[2] = argv[1] = argv[2] = argv[3] = argv[1] = argv[2] = 8 /usr/local/bin /bin . /usr/bin /usr/ucb /usr/sbin /bin /sbin bin bin . bin ucb sbin bin sbin bin / / / / / / / / argv[1] = argv[1] = argv[1] = argv[1] = 8 /usr/local/bin /bin . /usr/bin /usr/ucb /usr/sbin /bin /sbin bin bin . bin ucb sbin bin sbin / / / / / / / 8 4 -- /bin ^usr^local^bin ^bin . ^usr^bin ^usr^ucb ^usr^sbin ^bin ^sbin ^usr^local^bin ^bin . ^usr^bin ^usr^ucb ^usr^sbin ^bin ^sbin \usr/local/bin \bin . \usr/bin \usr/ucb \usr/sbin \bin \sbin \usr\local\bin \bin . \usr\bin \usr\ucb \usr\sbin \bin \sbin \usr\local\bin \bin . \usr\bin \usr\ucb \usr\sbin \bin \sbin ([a]=1) foo qux /usr/sbin/foo /usr/local/bin/qux hits command 0 /usr/sbin/foo 0 /bin/sh 0 /sbin/blat 0 /usr/local/bin/qux foo sh blat qux /usr/sbin/foo /bin/sh /sbin/blat /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=([six]="six" ["foo bar"]="foo quux" ) 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 26: declare: `myarray[foo[bar]=bleh': not a valid identifier def bleh abc myarray=(["]"]="def" [foo]="bleh" ["a]a"]="abc" ["a]=test1;#a"]="123" ) 123 myarray=(["]"]="def" ["a]=test2;#a"]="def" [foo]="bleh" ["a]a"]="abc" ["a]=test1;#a"]="123" ) 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 hash=([key]="value1" ) declare -A hash=([key]="value1 value2" ) declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" ) declare -A b=(["]"]="" ["\`"]="" ) declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) ./assoc9.sub: line 36: unset: `dict[']': not a valid identifier ./assoc9.sub: line 36: unset: `dict["]': not a valid identifier ./assoc9.sub: line 36: unset: `dict[\]': not a valid identifier ./assoc9.sub: line 36: 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 84: read: `a[80's]': not a valid identifier declare -A a declare -A a=(["80's"]="Depeche Mode" ) ./assoc9.sub: line 96: 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" ) foo ./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array f: declare -a a ./assoc10.sub: line 17: 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" declare -A a=([3]="" [1]="2" ) declare -A foo=([d]="4" [c]="3" [b]="2" [a]="1" ) foo=( d "4" c "3" b "2" a "1" ) declare -A foo=(["\\"]="5" ["@"]="3" ["holy hell this works"]="4" ["a b"]="1" ["spa ces"]="2" ) foo=( echo "\\" "5" "@" "3" "holy hell this works" "4" "a b" "1" "spa ces" "2" ) ./assoc11.sub: line 34: "": bad array subscript declare -A foo=([";"]="semicolon" ["]"]="def" [a=b]="assignment" ["a]a"]="abc" ["foo[bar"]="bleh" ) foo=( ";" "semicolon" "]" "def" a=b "assignment" "a]a" "abc" "foo[bar" "bleh" ) declare -A foo=(["'"]="squote" ["\""]="dquote" ["\\"]="bslash" ["\`"]="backquote" ) foo=( "'" "squote" "\"" "dquote" "\\" "bslash" "\`" "backquote" ) declare -A foo=(["bar]bie"]="doll" ["a]=test1;#a"]="123" ["bar\"bie"]="doll" ) foo=( "bar]bie" "doll" "a]=test1;#a" "123" "bar\"bie" "doll" ) declare -A inside=([c]="3" [b]="2" [a]="1" ) inside=( c "3" b "2" a "1" ) declare -A dict=(["?"]="quest" ["*"]="star" ["'"]="squote" ["\$"]="dol" ["\""]="dquote" ["\\"]="bslash" ["@"]="at" ["}"]="rbrace" ["{"]="lbrace" ["\`"]="bquote" ) dict=( "?" "quest" "*" "star" "'" "squote" "\$" "dol" "\"" "dquote" "\\" "bslash" "@" "at" "}" "rbrace" "{" "lbrace" "\`" "bquote" ) declare -A foo=([two]="" [one]="1" ) foo=( two "" one "1" ) rparen dquote rbrace bs declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) ")" "rparen" "\"" "dquote" "]" "rbrace" "\\" "bs" declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) declare -Arx foo=([two]="2" [three]="3" [one]="1" ) ./assoc11.sub: line 90: foo: readonly variable