Более новые версии bash поддерживают что-то, называемое «преобразование параметров», задокументированное в одном и том же имени в bash (1).
"${value@Q}"
расширяется до версии с кодами "${value}"
что вы можете повторно использовать в качестве входа.
Это означает, что следующее безопасное решение:
eval="${varname}=${value@Q}"