Wie veranlasst man eine Bash, in trace.log, trace1.log usw. zu schreiben?

Wie veranlasst man eine Bash, in trace.log, trace1.log usw. zu schreiben?

Ich erstelle ein Skript und möchte es in eine andere Datei schreiben (falls vorhanden).

traceroute google.com > trace.log

Ich wäre für jede Hilfe dankbar.
Außerdem bin ich ein Neuling, also wäre ein Beispiel hilfreich.
Danke.

Antwort1

Hier ist ein Ansatz:

#!/bin/sh
n=
while true
do
    fname="trace$n.log"
    [ -f "$fname" ] || break
    n=$(($n+1))
done
traceroute google.com >"$fname"

Das obige Programm durchläuft nacheinander alle möglichen Namen, trace.log, trace1.log, trace2.log, usw. Wenn es zum ersten Mal einen Namen findet, der nicht existiert, bricht es die Schleife ab und führt Ihren tracerouteBefehl aus.

Vorbehalt: Dieses Skript versucht nicht, Race Conditions zu behandeln. Insbesondere gibt es einen Moment, nachdem das Skript die Existenz einer Datei überprüft hat, aber bevor es diese Datei zum Schreiben öffnet. In diesem Moment könnte ein anderes laufendes Programm versuchen, die Datei zu erstellen. In dem unwahrscheinlichen Fall, dass dies für Sie ein Problem darstellt, wäre ein komplexerer Ansatz erforderlich.

verwandte Informationen