Ich muss die Datei /opt/nginx/conf.d/default.conf
mit diesem Inhalt über ein Shell-Skript erstellen und die Datei erstellen, wenn sie nicht vorhanden ist:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
Wie schreibe ich mehrzeilige Inhalte über ein Shell-Skript?
Ich habe das Verzeichnis erstellt
sudo mkdir -p /opt/nginx/conf.d
Aber ich weiß nicht, wie ich eine Datei schreiben soll.
text-processing
files
nginx
user3142695
quelle
quelle
Antworten:
Zusammenfassung:
>>
Zum Anhängen verwenden,[ -f file ]
zum Testen verwenden.Versuchen
cat <<EOF
wird als " Hier-Dokument " bezeichnet.$server
wird durch seinen Wert ersetzt oder leer, wenn nicht definiert.'EOF'
, um zu vermeiden, dass var ersetzt wird, falls vorhanden.Sie können auch mehrere Echos haben (dies kann schmerzhaft sein, wenn zu viele Echos beibehalten werden).
vorangestellt
In Bash gibt es kein direktes Voranstellen. Verwenden Sie auch keine temporäre Datei
oder bearbeiten Sie es
quelle
$
(falls vorhanden) enthalten, nicht als Variablen behandelt werden und daher nicht erweitert werdencat
die beiden Dateien zusammen zu schreiben und das Ergebnis umzubenennen.echo
s ausführen möchte , ist es immer noch effizienter, nur eine Umleitung zu haben, indem man sie in einen Block setzt:{ echo "foo"; echo "bar"; echo "baz"; } >file
- Auf diese Weise öffnen wir nichtfile
jedes Mal neu, wenn wir nur eine einzelne Zeile darauf schreiben möchten. und schließen, wenn diese Zeile fertig ist.cat << EOF | sudo tee /opt/nginx/conf.d/default.conf ...
Wenn die Datei /opt/nginx/conf.d/default.conf nicht vorhanden ist, drucken Sie (f) die statische Zeichenfolge in die Datei:
quelle
printf '%s\n' "first line" "second line"
etwas lesbarer halten. Auf diese Weise muss man nicht die ganze Zeichenfolge durchlesen, um herauszufinden, wo die Fluchten sind.