commit bash-20161216 snapshot

This commit is contained in:
Chet Ramey
2016-12-20 14:15:35 -05:00
parent a57ed9e90a
commit 06db13a410
23 changed files with 284 additions and 47 deletions
+20
View File
@@ -195,3 +195,23 @@ 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=(["\""]="1" ["'"]="3" ["\\"]="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=(["\""]="1" ["'"]="3" ["\\"]="4" ["\`"]="2" )
declare -A dict=(["\""]="1" ["'"]="3" ["\\"]="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" )
+3
View File
@@ -207,3 +207,6 @@ readonly -A assoc
declare -p assoc
${THIS_SH} ./assoc8.sub
# new shopt option to prevent multiple expansion of assoc array subscripts
${THIS_SH} ./assoc9.sub
+89
View File
@@ -0,0 +1,89 @@
typeset -A a=( [\\]= [\"]= [\)]= ) b
for x in "${!a[@]}"; do b[$x]=; done
b+=([\`]= [\]]=)
typeset -p b
for x in "${!a[@]}"; do
unset -v 'b[$x]'
done
typeset -p b
unset -v a b
loaddict()
{
dict['"']=1
dict['`']=2
dict["'"]=3
dict['\']=4
declare -p dict
}
del()
{
unset -v dict["$1"];
}
declare -A dict
loaddict
for k in "${!dict[@]}"; do del "$k"; done
declare -p dict
unset 'dict[@]'
shopt -s assoc_expand_once
declare -A dict
loaddict
for k in "${!dict[@]}"; do del "$k"; done
declare -p dict
unset a b dict
typeset -A a
b="80's"
((++a[$b]))
((++a["$b"]))
[[ $((++a[$b])) ]]
[[ $((++a["$b"])) ]]
echo ${a["$b"]}
echo ${a[$b]}
let "++a[$b]"
echo 'a[$b]=' "${a[$b]}"
unset a b
declare -A a
b="80's"
: ${a[$b]:='Depeche Mode'}
declare -p a
unset a b
shopt -u assoc_expand_once
typeset -A a
b="80's"
read a[$b] <<<"Depeche Mode"
typeset -p a
shopt -s assoc_expand_once
read a[$b] <<<"Depeche Mode"
typeset -p a
unset a
shopt -u assoc_expand_once
typeset -A a
printf -v a[$b] "%s" "Depeche Mode"
typeset -p a
shopt -s assoc_expand_once
printf -v a[$b] "%s" "Depeche Mode"
typeset -p a