pasar el parámetro de función como nombre en lugar de como una cadena

pasar el parámetro de función como nombre en lugar de como una cadena

Con esta función:

repr() {
    declare -p $1 | cut -d '=' -f 2- > /tmp/.repr
    $1=$(</tmp/.repr)
    rm /tmp/.repr
}

Me da un mensaje de error cuando escribo:

repr test

Esto ve el argumento como una cadena:

repr() {
    declare -p 'test' | cut -d '=' -f 2- > /tmp/.repr
    'test'=$(</tmp/.repr)
    rm /tmp/.repr
}

Y no como nombre:

repr() {
    declare -p test | cut -d '=' -f 2- > /tmp/.repr
    test=$(</tmp/.repr)
    rm /tmp/.repr
}

¿Cómo puedo solucionar el problema?

información relacionada