sto cercando di creare un array associativo in bash nel seguente modoBash array associativi con spazio nella chiave
#!/bin/bash
hash["name"]='Ashwin'
echo ${hash["name"]}
stampata l'uscita desiderata: Ashwin quando eseguito.
Ma quando la chiave ha uno spazio in esso,
#!/bin/bash
hash["first name"]='Ashwin'
echo ${hash["first name"]}
ottengo il seguente errore
test2.sh: line 2: first name: syntax error in expression (error token is "name")
sono le chiavi non ha permesso di avere spazi in esso?
Basato sul tuo commento alla risposta che si sta utilizzando bash 3. Bash 3 non supporta array associativi, qui ci sono alcuni [soluzioni] (http://stackoverflow.com/questions/11776468/create-associative-array-in-bash-3) – iruvar
Poiché gli array associativi non sono supportati prima di 'bash' 4, il tuo primo esempio viene effettivamente trattato come un array normale. Il parser è in grado di gestire stringhe semplici in cui si aspetta un valore intero e considera tutti come aventi il valore 0. È possibile indicizzare 'hash' con molte stringhe diverse e' $ {hash [chiave]} 'si espande ancora a' Ashwin'. – chepner