Path: csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail From: =?UTF-8?B?TMOpYSBHcmlz?= Newsgroups: gnu.bash.bug Subject: Associative array entries order differs from declaration Date: Thu, 15 Aug 2019 17:26:03 +0200 Lines: 82 Approved: bug-bash@gnu.org Message-ID: References: <71660c94-58cc-c87f-9e5f-c0aa32013097@noiraude.net> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="sijHikN1iqEi37Ftw6wrk6ofrTx2XZenu" X-Trace: usenet.stanford.edu 1565882784 8503 209.51.188.17 (15 Aug 2019 15:26:24 GMT) X-Complaints-To: action@cs.stanford.edu To: bug-bash@gnu.org Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=noiraude.net; s=noiraude; h=Content-Type:MIME-Version:Date:Message-ID: Subject:From:To:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=OehcBJotwWnRTTEi5031xDUzkvIKwN1AkTUa5ejI4fs=; b=FO9aNqaYaTakwznrHbQWXf9yBM bURqFLP9jTczezj27593NUTS0k5w8JKuG76FgoW841PPhToYfiPCF/RO8gQuBKDpkx20xrDzs9Ie1 DyU2MgoklbLsvV7hjRv3cyr7IaWreMg1VsFAe3IwM5Vyaq3YzAPUMnbjcMqHIh3COHynZb+eGEyk3 oxxMcjSYrbeR3OqxbPemIdJDRPBvyGQ0G9uxFTzPAIUOWDtf126Pn6MTYI73g+MAf/qXq7TWLTz/y 7o+i4lI+Xc71wJQNxKYjvtXZfJMf/+SHuffAC4xJi85y9CYNMDw2wdtqvtyb6w5mTIuBThUoer4Kb Kvcnh9/w==; Openpgp: id=2A931E283F202EE5BFCC4F7070946F168078ED52; url=https://www.noiraude.net/8078ED52.asc Autocrypt: addr=lea.gris@noiraude.net; prefer-encrypt=mutual; keydata= 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 I3KbDCDuQHywEBQ= User-Agent: Telnet/1.0 [tlh] (PDP11/DEC) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:910:10c6:1::1 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <71660c94-58cc-c87f-9e5f-c0aa32013097@noiraude.net> Xref: csiph.com gnu.bash.bug:15322 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --sijHikN1iqEi37Ftw6wrk6ofrTx2XZenu Content-Type: multipart/mixed; boundary="WzmB8xZbMesMWGYh6MBvOraLDr0djmk9I"; protected-headers="v1" From: =?UTF-8?B?TMOpYSBHcmlz?= To: bug-bash@gnu.org Message-ID: <71660c94-58cc-c87f-9e5f-c0aa32013097@noiraude.net> Subject: Associative array entries order differs from declaration --WzmB8xZbMesMWGYh6MBvOraLDr0djmk9I Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable While dealing with getting keys of arrays, I found out that associative=20 array keys where not registered in the same order as declared: #!/usr/bin/env bash # Declare and populate an associative array a unset a declare -A a=3D( ["one"]=3D"first" ["two"]=3D"second" ["three"]=3D"third" ["four"]=3D"last") ) typeset -p a # show actual declaration order that differs from real one # Show how the chaotic order affect iteration of the array for v in "${a[@]}"; do echo "$v" done Output: declare -A a=3D([two]=3D"second" [three]=3D"third" [four]=3D"last" [one]=3D= "first" second third last first This behavior looks just wrong and it is just same if you build the=20 array incrementally: unset a; declare -A a; a=3D(["one"]=3D"first"); a+=3D(["two"]=3D"second")= ;=20 a+=3D(["three"]=3D"third"); a+=3D(["four"]=3D"last"); typeset -p a Is there a way to control the order of entries in an associative array? What rules applies to the order of entries? --=20 L=C3=A9a Gris --WzmB8xZbMesMWGYh6MBvOraLDr0djmk9I-- --sijHikN1iqEi37Ftw6wrk6ofrTx2XZenu Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEKpMeKD8gLuW/zE9wcJRvFoB47VIFAl1VeYwACgkQcJRvFoB4 7VLymg/+PBHRe2zBNWdcPEDdrZdFGFkkXKgw8hXBVQWQXloPXur5D34/Q42B8P5+ nb9epMxyeSF1O7kKSFF6+wzZdTNisMm1oJptgxabf3TJv2sS8TRThTd5QW2g3p4P CJudnoz7OhEwwpHT0FRuPCeQzaSvvHJeewebSYkGe0cYn6iuB+E6End+9isn5OHN nj0puJrtVK6NiSk/P3AFH4f5PvoBF2nPGcvboz70ShcBZXez4rnM1dWLrjiYbd8Y GPbgz9li0oGt9o3LBGe5GFqAy0wx+NF8DqVzQvokD2pc+UZDeB/hN6xc1GYJHpiJ ddAaBi1lEZtC7EiatdT+LHASu9dzsrwGBb6k6Rjw6WXgKMTQcmoWRBn739o3cuC9 m5Gp579kbKew7xT2/SkDkq6EhNUteO09+vPOzEfVX0vN59YYN1D0Ck5L9q2vf4O5 q5+QTYdqbj7orHRlo3RMWonByg6ASAo7Zaep4+l5IbvmVJNorAQJKp4UeCKI/nZJ 9FFTcyU8DmOxW/KbcqU6k/RFq1Up8RmNh8sUVT25C78fZZWZfnlZESll27kP8kxm vPbRzQDNCjXsFDl8q+Jwu17a63CdBYXMjPFre6QLdvPNJb3tWM+tHsPgwgJME5MP K/XtoJrk6MKoq0OEWLxDkljWUJjjYEe5kOa8VCzYm+zwOtNuOCQ= =GAIl -----END PGP SIGNATURE----- --sijHikN1iqEi37Ftw6wrk6ofrTx2XZenu--