Übergeben Sie den Funktionsparameter als Namen statt als Zeichenfolge

Übergeben Sie den Funktionsparameter als Namen statt als Zeichenfolge

Mit dieser Funktion:

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

Es kommt eine Fehlermeldung, wenn ich schreibe:

repr test

Dies sieht das Argument als Zeichenfolge aus:

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

Und nicht als Name:

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

Wie kann ich das Problem lösen?

verwandte Informationen