Todo lo anterior funciona, pero también tiene que solucionar un problema (escapes y caracteres especiales) que no es necesario que ocurra en primer lugar: caracteres especiales cuando el shell expande la variable. Simplemente no hagas eso (expansión variable) en primer lugar. Utilice la variable directamente, sin expansión.
Además, si su variable contiene un secreto y desea copiar ese secreto en un archivo, es posible que desee no tener expansión en la línea de comandos, ya que el rastreo / eco de comando de los comandos de shell podría revelar el secreto. Significa que todas las respuestas que se usan $var
en la línea de comando pueden tener un riesgo potencial de seguridad al exponer el contenido variable al rastreo y registro del shell.
Utilizar este:
printenv var >file
Eso significa, en el caso de la pregunta OP:
printenv var >"$destfile"