関数パラメータを文字列ではなく名前として渡す

関数パラメータを文字列ではなく名前として渡す

この機能を使用すると、

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

次のように書くとエラーメッセージが表示されます:

repr test

これは引数を文字列として見ます:

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

名前としてではなく:

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

どうすれば問題を解決できますか?

関連情報