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.
Die kurze Antwort:
echo "some data for the file" >> fileName
Allerdings, echo
geht nicht optimal mit Zeilenendezeichen (EOFs) um . Wenn Sie also mehr als eine Zeile anhängen wollen, tun Sie es mit printf
:
printf "some data for the file\nAnd a new line" >> fileName
En >>
y >
Operatoren sind sehr nützlich für Umleitung der Ausgabe von Befehlen funktionieren sie mit mehreren anderen Bash-Befehlen.
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2 # This comment will be inside of the file.
The keyword EOM can be any text, but it must start the line and be alone.
EOM # This will be also inside of the file, see the space in front of EOM.
EOM # No comments and spaces around here, or it will not work.
text4
EOM
Ich weiß, dass dies eine verdammt alte Frage ist, aber da es im OP um Skripting geht und Google mich hierher gebracht hat, sollte auch das Öffnen von Dateideskriptoren zum gleichzeitigen Lesen und Schreiben erwähnt werden.
#!/bin/bash
# Open file descriptor (fd) 3 for read/write on a text file.
exec 3<> poem.txt
# Let's print some text to fd 3
echo "Roses are red" >&3
echo "Violets are blue" >&3
echo "Poems are cute" >&3
echo "And so are you" >&3
# Close fd 3
exec 3>&-
その後 cat
die Datei auf dem Terminal
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
Dieses Beispiel führt dazu, dass die Datei poem.txt auf dem Dateideskriptor 3 zum Lesen und Schreiben geöffnet wird. Es zeigt auch, dass *nix-Boxen mehr fd's kennen als nur stdin, stdout und stderr (fd 0,1,2). Es gibt tatsächlich eine Menge davon. Normalerweise kann die maximale Anzahl von Dateideskriptoren, die der Kernel zuweisen kann, gefunden werden in /proc/sys/file-max
ou /proc/sys/fs/file-max
aber die Verwendung von fd über 9 ist gefährlich, da es zu Konflikten mit fd's kommen kann, die von der Shell intern verwendet werden. Machen Sie sich also nicht die Mühe und verwenden Sie nur die fd's 0-9. Wenn Sie mehr als 9 Dateideskriptoren in einem Bash-Skript benötigen, sollten Sie ohnehin eine andere Sprache verwenden :)
Jedenfalls können fd's auf viele interessante Arten verwendet werden.
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.