Hallo Gemeinde,
ich habe ein Script geschrieben und hoffe ihr könnt dieses verbessern und es hilft vielleicht anderen. Folgendes soll das Script am Ende tun.
Mein Rechner nimmt tagsüber Videos auf und speichert diese in /home/hts ab. Im Dateiformat .ts
Da dieses Format schlecht zu schneiden ist, muss die Datei konvertiert werden. Das Script soll also alle Dateien in dem Ordner in /home/andreas/Dokumente/umformatiert/$FILE.avi umformatieren. Das mache ich mit mencoder, was auch funktioniert. Anschließend soll er die .ts Datei in einen Backupordner schieben, packen und die .ts datei löschen. Das Löschen ist zunächst noch ein mv-Befehl.
Jetzt zum ersten "Problem": Im /home/hts gibt es noch einen versteckten Ordner .hts den, nachdem alle Dateien umgewandelt sind, das Script versucht umzuwandeln. Deshalb hab ich uneleganterweise eine if Bedingung eingetragen.
die zweite If-Bedingung soll die Abbruchbedingung sein. Allerdings kommt hier immer ein Fehler "zweistelliger (binärer) operator erwartet". Das liegt irgendwie am Syntax aber kein Plan was falsch ist.
Zum Schluss gibt es noch zwei Sachen:
Wie kann ich das Script automatisch zu einer Uhrzeit ausführen? Wie kann ich noch laufende Aufnahmen skippen? Würde Ihr etwas anders schreiben?
Mein Ubuntu ist 14.04.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/bin/bash cd /home/hts/ FILE=$(ls -X | head -1 ) echo "erste Auslesung" echo $FILE while [ -n $FILE ] do echo "WHILESCHLEIFE" echo $FILE if [ $FILE -d ] then echo "ORDNER = Abbruch" exit fi if [ "$FILE" == "" ] then echo "nix mehr da FERTIG" exit fi mencoder /home/hts/$FILE -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=1600:vpass=1:threads=4 -vf kerndeint -oac mp3lame -lameopts cbr:br=128 -of avi -o /home/andreas/Dokumente/umformatiert/$FILE.avi mv $FILE /home/andreas/Dokumente/backup/$FILE echo "DATEI kopiert" cd /home/andreas/Dokumente/backup/ tar -czvf $FILE.tar $FILE echo "Datei gepackt" mv $FILE /home/andreas/Dokumente/backup2/$FILE echo "hier soll später Datei entfernt werden" cd /home/hts/ echo "wieder zurück in /home/hts" FILE=$( ls -X | head -1) echo "Zyklus fertig" echo $FILE done |