[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How to initialize a read-only, global, associative array in Bash?
From: |
Tim Friske |
Subject: |
How to initialize a read-only, global, associative array in Bash? |
Date: |
Mon, 26 Nov 2012 22:45:55 +0100 |
Hi folks,
I execute the following code in Bash version "GNU bash, Version
4.2.39(1)-release (x86_64-redhat-linux-gnu)":
function foobar {
declare -rgA FOOBAR=([foo]=bar)
}
foobar
declare -p FOOBAR
# Output: declare -Ar FOOBAR='()'
Why doesn't Bash initialize FOOBAR with ([foo]=bar) according to
declare -p? The same declaration works outside of a function, e.g.
declare -rgA FOOBAR=([foo]=bar)
declare -p FOOBAR
# Output: declare -Ar FOOBAR='([foo]="bar" )'
Similarly the following code but without FOOBAR being read-only works:
function foobar {
declare -gA FOOBAR
FOOBAR=([foo]=bar)
}
foobar
declare -p FOOBAR
# Output: declare -A FOOBAR='([foo]="bar" )'
Is this a bug or feature?
Cheers,
Tim
BTW: I couldn't find a "bashbug" RPM package in the Fedora 17
repositories; that's why I wrote this formless mail. Sorry for that.
--
`~~~~°<
C92A E44E CC19 58E2 FA35 4048 2217 3C6E 0338 83FC
- How to initialize a read-only, global, associative array in Bash?,
Tim Friske <=