2011-02-02 12 views
29

Devo configurare un server con pochi file e voglio farlo in modo programmatico.Creazione di file con alcuni contenuti con script di shell

ho bisogno di creare file dire /home/a.config, /var/spool/b.config, /etc/c.config

file di cui sopra hanno alcuni contenuti (multi linee).

Voglio creare UNO script di shell che può creare tutti e tre i file con più righe (circa 10). mi piacerebbe sapere come posso usare il comando CAT per farlo. (all'interno dello script di shell).

Sto cercando somehting come questo

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

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

grazie

risposta

57

È possibile utilizzare un documento here:

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

È possibile inserire alcuni di questi nello stesso script.

+0

grazie questo è quello che stavo cercando – Mahes

6

in questo modo:

#!/bin/bash 

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

Per ulteriori informazioni, vedere la Parte Input/Output di abs.
Spero, questo aiuti.

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

Si noti che è necessario anche a scappare alcuni caratteri per evitare che interferiscano con quello che stai cercando di fare, ad esempio $ `e" saranno tutti rompere una simile affermazione se preceduto da una barra rovesciata, vale a dire \ `\ $ o \"

quindi se definiamo la seguente:

var = "100"

seguente non si comporterebbero come previsto:

echo "in poche parole,
solo "prestare" Mi US $ $ var"> a.config

ma il seguente dovrebbe funzionare correttamente :

echo "in poche parole,
solo \" dare \ "mi US \ $ $ var"> a.config

4

file = "/ tmp/test.txt"
echo "L'aggiunta di prima linea"> file $
echo "Aggiunta di prima linea sostituito"> $ file
echo "Aggiunta seconda linea" >> $ file
echo "Aggiunta terza linea" >> $ file
gatto $ file

> per aggiungere/sostituire il contenuto (contenuto qui effettivo ottenuto sostituita dalla 2 ° linea)
>> ad appendere

Risultato
L'aggiunta di prima linea sostituito
Aggiunta di seconda linea
Aggiunta terza linea

+0

Mi chiedo perché nessuno ti ha dato un up votazione. Anche la tua risposta è abbastanza buona. Grazie lavora per me. – sarmahdi

0

Se hai variabili come $ 1 o $ HOMEDIR nel testo allora questi normalmente ottenere valutato e sostituiti con valori reali. Se si vuole evitare che questi da sempre sostituito allora avete bisogno di citare la stringa limite di apertura (EOF nell'esempio qui sotto) con la singola citazione 'EOF', virgolette "EOF" o precedere da backslash \EOF

chiusura stringa limite rimane come è. EOF

Ciò è particolarmente utile se si scrivono script di shell in un file.

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 

consultare Esempio 19.7 Parametro Sostituzione Spento in Here Documents

Problemi correlati