Ich bin ein Anfänger in Sachen Bash-Skripting und habe dieses Szenario etwa sechs Stunden lang vergeblich gegoogelt. Ich habe Teile dessen gefunden, was ich brauche, aber keine umfassende Lösung.
Hier ist das Problem: Ich muss Code schreiben, der überprüft, ob 3 Dateien vorhanden sind ( file1.txt
, file2.csv
und file3.log
). Bevor ich jedoch fortfahre, muss ich bestätigen, dass der file3.log
Schreibvorgang beendet wurde (um zu bestätigen, dass das Skript, das die 3 Dateien erstellt, erfolgreich abgeschlossen wurde).
Die Überprüfung der Existenz dieser Dateien scheint mit etwas wie: recht einfach zu sein
if [ -f -e /path/to/file/file1.txt && /path/to/file/file2.csv && /path/to/file/file3.log]
then
# somehow check the exit status of file3.log
if [$? !=0]
#somehow loop (maybe every 5 minutes) until $?=0
done
ODER
Ich habe auch darüber nachgedacht, ob ich das alles einfach vermeiden und nur den Beendigungsstatus des ursprünglichen Skripts prüfen kann. Aber ich war mir nicht sicher, denn wenn es irgendeine Art von Fehler gäbe und die Dateien nicht erstellt würden, dann wäre das ein ernstes Problem, weil der nächste Teil des Scanvorgangs etwa 2 Tage dauert …
Entschuldigen Sie, wenn dies wie eine dumme Frage klingt, aber ich stecke so tief im Google-Loch „if-until-exit-zero-else...“, dass ich keine Ahnung habe, was ich jetzt tun soll.
Antwort1
Um zu überprüfen, ob ein benanntes Programm oder Skript beendet wurde, verwenden Sie den Befehl:
wait $(pgrep program-name)