2011-09-25 17 views
6

Como parte de un script de compilación del sistema, tengo un script que crea varios archivos y configuraciones.Script BASH para pasar variables sin sustitución al nuevo script

Sin embargo, una parte del script de compilación crea un nuevo script que contiene variables que no quiero que se resuelvan cuando se ejecuta el script de compilación. Código de ejemplo

cat - > /etc/profile.d/mymotd.sh <<EOF 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 

fragmento de código que he intentado todo tipo de combinaciones de "y", y (e [pero no puedo obtener la secuencia de comandos para enviar el contenido sin sustituir los valores y la colocación de los sustitutos en el nuevo guión en lugar de la texto original.

ideas?

Respuesta

9

es más fácil para escapar de la $

echo -e "es el nombre de host \ $ hostname"

23

El método más fácil, suponiendo que no desea que se sustituya nada en el documento aquí, es poner el marcador EOF entre comillas, como este:

cat - > /etc/profile.d/mymotd.sh <<'EOF' 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 
+0

Perfecto. Eso funciono. Gracias. – interoperate

+1

Debería aceptarse respuesta, gracias – David

Cuestiones relacionadas