Ich versuche eine assoziative Array in heftigen Schlag auf die folgende WeiseBash assoziativer Arrays mit dem Raum in dem Schlüssel
#!/bin/bash
hash["name"]='Ashwin'
echo ${hash["name"]}
Dieser druckt die gewünschte Ausgabe zu erzeugen: Ashwin wenn sie ausgeführt werden.
Aber wenn der Schlüssel ein Leerzeichen enthält,
#!/bin/bash
hash["first name"]='Ashwin'
echo ${hash["first name"]}
ich folgende Fehlermeldung erhalten
test2.sh: line 2: first name: syntax error in expression (error token is "name")
sind Schlüssel keine Leerzeichen in es haben darf?
Basierend auf Ihren Kommentar zu der Antwort bash 3. Sie verwenden Bash 3 nicht unterstützt assoziative Arrays, hier getestet verwenden, sind einige [Abhilfen] (http://stackoverflow.com/questions/11776468/create-assoziative-array-in-bash-3) – iruvar
Da assoziative Arrays vor 'bash' 4 nicht unterstützt werden, wird Ihr erstes Beispiel tatsächlich als reguläres Array behandelt. Der Parser ist in der Lage, mit einfachen Strings umzugehen, wo er einen ganzzahligen Wert erwartet und behandelt sie alle mit dem Wert 0. Sie können 'hash' mit vielen verschiedenen Strings indizieren und' $ {hash [key]} '' expandiert nach ' Ashwin. – chepner