2011-02-02 13 views
29

Necesito configurar un servidor con pocos archivos y quiero hacerlo programáticamente.Creación de archivos con algún contenido con script de shell

i necesidad de crear archivos dicen /home/a.config, /var/spool/b.config, /etc/c.config

archivos anteriores tienen algunos contenidos (MULTI).

quiero crear UN script de shell que pueda crear los tres archivos con varias líneas (alrededor de 10). me gustaría saber cómo puedo usar el comando CAT para hacer eso. (dentro del script de shell).

busco somehting como esto

echo " going to create /home/a.config" 

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " > /home/a.config 

gracias

Respuesta

57

Puede utilizar un documento aquí:

cat <<EOF >/home/a.config 
first line 
second line 
third line 
EOF 

Puede colocar varios de estos en el mismo guión.

+0

gracias esto es lo que estaba buscando – Mahes

6

así:

#!/bin/bash 

var="your text" 
echo "simply put, 
just so: $var" > a.config 

Para más información, véase la parte de entrada/salida de abs.
Espero, esto ayuda.

1
>\#!/bin/bash 
> 
>var="your text" <br> 
>echo "simply put, <br> 
>just so: $var" > a.config 

Tenga en cuenta que también hay que escapar por ciertos caracteres para evitar que interfieran con lo que estamos tratando de hacer, por ejemplo $ `y" serán todos romper tal declaración no ser precedido por una barra invertida, es decir \ `\ $ o \"

así que si definimos la siguiente:

var = "100"

los siguientes no se comportaría como se esperaba:

eco "en pocas palabras,
sólo "prestar" Me US $ $ var"> a.config

pero el siguiente funcionaría correctamente :

eco "en pocas palabras,
simplemente \" prestar \ "me EEUU \ $ $ var"> a.config

4

file = "/ tmp/test.txt"
eco "Adición de primera línea"> archivo $
eco "Adición de primera línea sustituyen"> archivo $
echo "Al añadir segunda línea" >> $ archivo
echo "Al añadir tercera línea" >> $ archivo
gato archivo $

> para añadir/cambiar el contenido (contenido real aquí quedó sustituida por la línea de segundo)
>> a anexar

Resultado
Adición de primera línea sustituyen
Al añadir segunda línea
Al añadir tercera línea

+0

Me pregunto por qué no se le ha proporcionado una Answer. Tu respuesta es bastante buena también. Gracias, trabaja para mi – sarmahdi

0

Si tienes variables como $ 1 o $ HOMEDIR en el texto a continuación, éstos normalmente se evalúan y sustituidos por valores reales. Si desea evitar que éstos consiguiendo sustituido entonces es necesario citar la cadena de carrera de apertura (EOF en el ejemplo a continuación) con comilla simple 'EOF', comillas dobles "EOF" o precedido de la barra invertida \EOF

Cierre cadena límite se queda como está. EOF

Esto es especialmente útil si está escribiendo scripts de shell en un archivo.

cat << 'EOF' >/etc/rc.d/init.d/startup 
case $1 in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    restart) 
     stop 
     start 
     ;; 
    status) 
     pid=$(tomcat_pid) 
     if [ -n "$pid" ] 
     then 
      echo "Tomcat is running with pid: $pid" 
     else 
      echo "Tomcat is not running" 
     fi 
     ;; 
esac 

EOF 

Consulte Ejemplo 19.7 Sustitución de parámetros desactivada en Here Documents

Cuestiones relacionadas