¿Cómo hacer un viaje networkingondo a una matriz asociativa bash a un file de text?

Quiero memorizar una matriz asociativa entre diferentes secuencias de commands. Lo que tengo hasta ahora es que dado un file de text que contiene un par key / valor:

( [james]=bond ) 

Es una secuencia de commands para cargar eso en una matriz asociativa, agregar a ella, luego repetirla de una manera que se puede networkingirigir a un segundo file:

 #!/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 ")" 

entonces puedo ejecutarlo como:

 ./arrays.sh file1 honey rider > file2 ; mv file2 file1 

Dar

 ( [james]=bond [honey]=rider ) 

Sin embargo, parece muy torpe. ¿Hay una manera más limpia de hacer esto?

En bash , declare -p se puede usar para volcar la definición de una variable como código de shell listo para ser interpretado, por lo que puede hacer actualizaciones al file con:

 #! /bin/bash - file=${1?}; shift declare -A row source -- "$file" || exit while [ "$#" -ge 2 ]; do row[$1]=$2 shift 2 done declare -p row > "$file" 

Un script para mostrar el contenido del file sería:

 #! /bin/bash - file=${1?}; shift declare -A row source -- "$file" for i in "${!row[@]}" do echo "key : $i" echo "value: ${row[$i]}" done