将函数参数作为名称而不是字符串传递

将函数参数作为名称而不是字符串传递

有了这个功能:

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
}

我该如何解决这个问题?

相关内容