Ich möchte ein assoziatives Array zwischen verschiedenen Skriptläufen auswendig lernen. Was ich bisher habe, ist die gegebene Textdatei, die ein Schlüssel / Wert-Paar enthält:
(
[james]=bond
)
Ist ein Skript, um das in ein assoziatives Array zu laden, es hinzuzufügen und es dann auf eine Weise wiederzugeben, die in eine zweite Datei umgeleitet werden kann:
#!/bin/bash
file=`cat $1`
key=$2
value=$3
declare -A row="$file"
row[$key]=$value
echo "("
for server in "${!row[@]}"
do echo "[$server]=${row[$server]}"; done
echo ")"
dann kann ich es ausführen als:
./arrays.sh file1 honey rider > file2 ; mv file2 file1
Geben
(
[james]=bond
[honey]=rider
)
Dennoch scheint es sehr klobig. Gibt es einen saubereren Weg, dies zu tun?
declare -p hash > file
um dashash
assoziative Array zu speichern .source file
etwas wiederherstellen.arrays.bash
...Antworten:
In
bash
,declare -p
verwendet werden kann , die Definition einer Variablen als Shell - Code - Dump bereit zu interpretieren, so dass Sie mit Aktualisierungen der Datei tun können:Beachten Sie, dass es wichtig ist, dass die Datei im selben Gebietsschema (mindestens in derselben
LC_CTYPE
Kategorie) generiert und bezogen wird .Ein Skript zum Anzeigen des Inhalts der Datei wäre:
quelle
bash
(aktueller als zum Zeitpunkt der Erstellung der Antwort verfügbar) können Siereadarray -td '' array
NUL-getrennte Datensätze in ein reguläres Array lesen und dann in ein assoziatives Array konvertieren.