mahstard
Goto Top

Shell-Skript: Unterstützung benötigt

Sehr geehrte Damen und Herren,
ich wünsche einen guten Tag.

Ich benötige Unterstützung bei einem Shell-Skript.
Da ich mich damit nicht auskenne, ist es bisher mit Suchmaschine und probieren entstanden.
Irgendwie funktioniert es und irgendwie auch nicht.

#!/bin/bash

nohup ffmpeg -i URL -c copy Test_.mp3 &
#process=$(pgrep ffmpeg)
nr=1
ende= date -d "+15 days"  
while [[ date -lt $ende ]]
do
  if [[ ! -z $process ]]
  then
    sleep 30s
    killall ffmpeg #Test, ob der else-Zweig funktioniert
  else
    nohup ffmpeg -i URL -c copy "Test_"+$nr+".mp3" &  
    $nr+=1
fi
done


Nach Ausführung des Skripts wird mir der Inhalt von $ende angezeigt und die if-Anweisungen funktionieren nicht wie sie sollen.
Kann mir jemand helfen?


Mit bestem Dank und freundlichen Grüßen

Content-ID: 1618903901

Url: https://administrator.de/forum/shell-skript-unterstuetzung-benoetigt-1618903901.html

Ausgedruckt am: 22.12.2024 um 19:12 Uhr

aqui
aqui 14.12.2021 aktualisiert um 12:47:00 Uhr
Goto Top
In Foren duzt man sich in der Regel... 😉
Hilfreich wären zudem ein paar Worte gewesen die beschreiben WAS genau das Script machen soll.
Hochachtungsvoll !
MahstarD
MahstarD 14.12.2021 um 13:16:06 Uhr
Goto Top
Hilfreich wären zudem ein paar Worte gewesen die beschreiben WAS genau das Script machen soll.

Das Skript soll folgendes machen:
-eine Aufnahme mit ffmpeg im Hintergrund starten
-solange ein Datum nicht erreicht ist
-prüfen ob der ffmpeg-Prozess läuft
-wenn ja, 30Sek warten und erneut prüfen
-wenn nein, Aufnahme mit ffmpeg erneut starten und dem Dateinamen eine dann hochzählende Nummer anhängen
TK1987
Lösung TK1987 14.12.2021 um 16:04:15 Uhr
Goto Top
Moin,

Zitat von @MahstarD:
Das Skript soll folgendes machen:
-eine Aufnahme mit ffmpeg im Hintergrund starten
-solange ein Datum nicht erreicht ist
-prüfen ob der ffmpeg-Prozess läuft
-wenn ja, 30Sek warten und erneut prüfen
-wenn nein, Aufnahme mit ffmpeg erneut starten und dem Dateinamen eine dann hochzählende Nummer anhängen
#!/bin/bash

ENDE=$( date -d "+15 Days" +%s )  
NR=1

until [[ $(date +%s) -ge $ENDE ]]
do
  if pgrep ffmpeg > /dev/null
    then
      sleep 30
    else
      # ffmpeg hier starten lassen
      NR=$(($NR+1))
  fi
done

Gruß Thomas
MahstarD
MahstarD 15.12.2021 um 10:52:11 Uhr
Goto Top
Vielen Dank für das Skript, hat super funktioniert.


Noch eine Verständnisfrage bevor ich die Frage als gelöst markiere.
DATUM=$( date -d "+1 days" +%s )  
DATUM enthält jetzt einen Wert exakt 24Stunden später?
Habe ich das richtig verstanden?
TK1987
TK1987 15.12.2021 um 12:51:48 Uhr
Goto Top
Zitat von @MahstarD:
Noch eine Verständnisfrage bevor ich die Frage als gelöst markiere.
DATUM=$( date -d "+1 days" +%s )  
DATUM enthält jetzt einen Wert exakt 24Stunden später?
Habe ich das richtig verstanden?
Genau.

-d "+1days" - erhöht das derzeitige Datum um einen Tag, sprich: Morgen um die gleiche Zeit.

+%s - Ändert das Ausgabeformat des Datum ab. Hier werden die Sekunden ausgegeben, die vom "01.01.1970 00:00 Uhr UTC" bis zu dem angegebenen Datum vergangen sind bzw. vergangen sein werden - so erhält man einen Numerischen Wert, den man vergleichen kann.
MahstarD
MahstarD 15.12.2021 um 13:01:06 Uhr
Goto Top
Vielen Dank für die Hilfe