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-Key: 1618903901

Url: https://administrator.de/contentid/1618903901

Printed on: April 25, 2024 at 04:04 o'clock

Member: aqui
aqui Dec 14, 2021 updated at 11:47:00 (UTC)
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 !
Member: MahstarD
MahstarD Dec 14, 2021 at 12:16:06 (UTC)
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
Member: TK1987
Solution TK1987 Dec 14, 2021 at 15:04:15 (UTC)
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
Member: MahstarD
MahstarD Dec 15, 2021 at 09:52:11 (UTC)
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?
Member: TK1987
TK1987 Dec 15, 2021 at 11:51:48 (UTC)
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.
Member: MahstarD
MahstarD Dec 15, 2021 at 12:01:06 (UTC)
Goto Top
Vielen Dank für die Hilfe