ksh88 cambiando comillas simples a comillas dobles dentro de heredocs?

Parece que me encuentro con un problema específico de ksh88 que cambia las comillas simples por comillas dobles, pero solo en ciertas situaciones que involucran heredocs y sustitución de comandos.

Aquí hay un ejemplo:

#!/bin/ksh

# This example works correctly
echo "Example 1:"
cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF
echo


# This example is broken
echo "Example 2:"
var=$(cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF)
echo "${var}"
echo


# This example works correctly
echo "Example 3:"
var=`cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF`
echo "${var}"
echo

Y aquí está la salida (observe cómo el Ejemplo 2 es diferente):

Example 1:
The 'quick' brown fox "jumped" over the lazy dog.

Example 2:
The "quick" brown fox "jumped" over the lazy dog.

Example 3:
The 'quick' brown fox "jumped" over the lazy dog.

los' a" la sustitución parece ocurrirantes de El comando se ejecuta. En el contexto real, el heredoc está pasando SQL a Oracle. Cambiando' a", las cadenas se están convirtiendo en identificadores, rompiendo así el SQL. Esto también se puede observar habilitando xtrace durante la ejecución del código anterior.

¿Cómo puedo prevenir el' a" conversión en el fragmento de código anterior sin utilizar backticks?

Editar: La trama se complica. Sustitución de la sustitución del comando$( ... ) con notación de retroceso no reemplaza las comillas simples con comillas dobles. Entonces (opcional) pregunta dos: ¿por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta