webentwicklung-frage-antwort-db.com.de

Erstellen von Dateien mit etwas Inhalt mit Shell-Skript

Ich muss einen Server mit wenigen Dateien konfigurieren und ich möchte es programmgesteuert machen.

ich muss Dateien erstellen wie /home/a.config, /var/spool/b.config /etc/c.config

die obigen Dateien haben einige Inhalte (mehrzeilig).

ich möchte ein Shell-Skript erstellen, das alle drei Dateien mit mehreren Zeilen (um 10) erstellen kann (in Shell-Skript).

ich sehe so aus

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

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

vielen Dank

33
Mahes

Sie können ein Here-Dokument verwenden:

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

Sie können mehrere davon in dasselbe Skript einfügen.

67

So wie:

#!/bin/bash

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

Weitere Informationen finden Sie unter Eingabe/Ausgabe von abs .
Hoffe das hilft.

6
Victor Sorokin

file = "/ tmp/test.txt"
echo "Erste Zeile hinzufügen"> $ -Datei
echo "Erste Zeile ersetzt"> $ -Datei
echo "Zweite Zeile anhängen" >> $ -Datei
echo "Dritte Zeile anhängen" >> $ -Datei
cat $ file

> um den Inhalt hinzuzufügen/zu ersetzen (hier wird der tatsächliche Inhalt durch die 2. Zeile ersetzt)
>> zum Anhängen 

Ergebnis
Hinzufügen der ersten Zeile ersetzt
Zweite Zeile anhängen
Anhängen der dritten Zeile

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

Beachten Sie, dass Sie auch bestimmte Zeichen entfernen müssen, um zu verhindern, dass sie mit dem, was Sie versuchen, zu stören, zum Beispiel $ `und" werden alle eine solche Anweisung unterbrechen, wenn nicht ein Backslash vorangestellt wird, d.

wenn wir also Folgendes definieren: 

var = "100"

folgendes würde sich nicht wie erwartet verhalten:

echo "einfach gesagt, 
leihen Sie mir einfach US $ $ var "> a.config

aber Folgendes würde richtig funktionieren:

echo "einfach gesagt, 
einfach\"leihen \" mir US\$ $ var "> a.config

1
scotjam1981

Wenn Sie in Ihrem Text Variablen wie $ 1 oder $ HOMEDIR haben, werden diese normalerweise ausgewertet und durch tatsächliche Werte ersetzt. Wenn Sie verhindern möchten, dass diese ersetzt werden, müssen Sie die Zeichenfolge für die Anfangslimitierung (EOF im Beispiel unten) mit einem einfachen Anführungszeichen 'EOF', einem doppelten Anführungszeichen "EOF" oder mit einem Backslash \EOF voranstellen

Die Schließlimit-Zeichenfolge bleibt unverändert. EOF

Dies ist besonders nützlich, wenn Sie Shell-Skripts in eine Datei schreiben.

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

Siehe Beispiel 19.7 Parameterersetzung in Hier Dokumente deaktiviert

1
Deepak Rao