Wie kann ich mit einem Shell-Skript unter Linux automatisch Daten in eine Textdatei schreiben?
Ich konnte die Datei öffnen. Ich weiß jedoch nicht, wie ich Daten in die Datei schreiben kann.
Wie kann ich mit einem Shell-Skript unter Linux automatisch Daten in eine Textdatei schreiben?
Ich konnte die Datei öffnen. Ich weiß jedoch nicht, wie ich Daten in die Datei schreiben kann.
Für Umgebungen, in denen diese Dokumente nicht verfügbar sind ( Makefile
, Dockerfile
usw.) können Sie oft verwenden printf
für eine einigermaßen lesbare und effiziente Lösung.
printf '%s\n' '#!/bin/sh' '# Second line' \
'# Third line' \
'# Conveniently mix single and double quotes, too' \
"# Generated $(date)" \
'# ^ the date command executes when the file is generated' \
'for file in *; do' \
' echo "Found $file"' \
'done' >outputfile
Ich dachte, es gäbe einige sehr gute Antworten, aber keine prägnante Zusammenfassung aller Möglichkeiten; also:
Der Kerngedanke hinter den meisten Antworten hier ist Nachsendung . Zwei sind wichtige Umleitungsoperatoren für das Schreiben in Dateien:
echo 'text to completely overwrite contents of myfile' > myfile
echo 'text to add to end of myfile' >> myfile
Andere erwähnten, eher als von einer festen Eingangsquelle wie echo 'text'
Sie können auch über ein "Here Document" interaktiv in Dateien schreiben, die auch in dem Link zum Bash-Handbuch oben beschrieben sind. Diese Antworten, z.B.
cat > FILE.txt <<EOF` or `cat >> FILE.txt <<EOF
verwenden die gleichen Umleitungsoperatoren, fügen aber über "Here Documents" eine weitere Ebene hinzu. In der obigen Syntax schreiben Sie in die FILE.txt über die Ausgabe von cat
. Das Schreiben erfolgt erst, nachdem der interaktiven Eingabe eine bestimmte Zeichenkette übergeben wurde, in diesem Fall "EOF", aber dies könnte eine beliebige Zeichenkette sein, z. B.:
cat > FILE.txt <<'StopEverything'` or `cat >> FILE.txt <<'StopEverything'
würde genauso gut funktionieren. Hier suchen die Dokumente auch nach verschiedenen Begrenzungszeichen und anderen interessanten Parsing-Zeichen, also schauen Sie in die Dokumentation, um weitere Informationen zu erhalten.
Es ist etwas kompliziert und eher eine Übung im Verständnis der Syntax von Here-Dokumenten und der Umleitung, aber man kann die Syntax von Here-Dokumenten mit den Standard-Umleitungsoperatoren kombinieren, um eine Here-Zeichenkette zu erhalten:
cat > myfile <<<'text to completely overwrite contents of myfile'
cat >> myfile <<<'text to completely overwrite contents of myfile'
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.