Hallo,
ich möchte mehrere Zeilen in einer Datei schreiben und kenne dafür folgende Möglichkeiten
bash?
(
echo "Zeile 1";
echo "Zeile 10";
) > test_1.txt
hat Probleme mit Anführungszeichen in Zeilen
echo -e "Zeile 1\nZeile 2\nZeile 3\nZeile 4\nZeile 5\nZeile 6\nZeile 7\nZeile 8\nZeile 9\nZeile 10" > test_2.txt
hat die gleichen Probleme mit nicht maskierten Anführungszeichen.
cat > test_3.txt
Zeile 1
Zeile 10
<STRG>+D
Kann man die 3. Variante irgendwie in ein Skript einbauen und automatisch am Ende <STRG>+D drücken lassen?
Was hast Du vor? In der dritten Variante kommt die Eingabe von STDIN.
Warum kannst das Skript nicht gleich die Daten in die Zieldatei schreiben?
Es gibt übrigens
>>
zum Anhängen an eine bestehende Datei.
Eine mögliche Alternative wären bashs Heredocs:
(cat <<markierungszeile_fuer_das_ende_der_eingabe
Zeile 1
Zeile 2
Zeile 3
Zeile 4
markierungszeile_fuer_das_ende_der_eingabe
) > test_4.txt
Der große Vorteil von cat in allen Varianten ist es, dass Anführungszeichen kein Problem darstellen.
Übrigens, unter der Voraussetzung, dass es keine Anführungszeichen gibt, geht auch:
echo "Zeile 1
Zeile 2
Zeile 3
Zeile 4" > test_5.txt
Wenn wir schon dabei sind, mit dem Backslash kannst Du eine Anweisung auf mehrere Zeilen verteilen:
echo \
"Zeile 1
Zeile 2
Zeile 3
Zeile 4" \
test_6.txt
Alles in allem wäre Dir vermutlich mehr geholfen, wenn Du uns Dein eigentliches Ziel mitteiltest.
Freundliche Grüße
Vinzenz