Use
eval ${VAR_NAME}='"${VAR_VALUE}"'
Com eval
, você obtém, em geral, uma expansão dupla. Se houver alguma coisa em uma instrução eval
que deve ser expandida apenas uma vez, geralmente é melhor citá-las de forma que a primeira expansão não faça nada (exceto a remoção de cotações) e a segunda expansão faça o trabalho principal. Neste caso concreto, a primeira expansão produz
STREET="${VAR_VALUE}"
que é então executado corretamente durante a segunda expansão. Se você tentar fazer o contrário, é difícil garantir que o resultado da primeira expansão permaneça inalterado durante a segunda expansão.
Eu também tenho a impressão de que o primeiro eval
(antes local VAR_NAME=${2}
é supérfluo.