Output of svdrpsend - ich stehe auf dem Schlauch

  • Ich bekomme das hier nicht gebacken:



    Und wenn ich das Skript ausführe, erhalte ich:

    Code
    [bernd_b@amd64-archlinux P_III]$ ./vdr_channel_prepare_test.sh 
    Zeile 250 svdr:   250 1 22576
    verbl. Sekunden:  22576
     Ende der Ausgabe 22576
    Output 2:	  12345 Ende der Ausgabe


    Warum verhält sich der Output1 nicht so wie der Output2, also warum wird der Text "Ende der Ausgabe" am Anfang der Zeile über den vorhandenen Text gedruckt? Hat jemand eine Idee und Erbarmen mit mir?

  • Der VDR liefert ein \r\n als Zeilenumbruch und das \r (Zeilenrücklauf) hängt an der in Time_to_next_record abgelegten Zahl dran.
    Man könnte das z.B. so loswerden:

    Code
    Time_to_next_record=$(echo $svdrpsend_get | cut -d " " -f 3 | sed 's/\r//')

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Der Zusatz

    Code
    sed 's/\r//'


    funktioniert - jetzt verhält sich die Ausgabe für meine bescheidene Kenntnisse normal.


    Den Hinweis mit dem

    Code
    output1="$( echo $Time_to_next_record  Ende der Ausgabe)"


    verstehe ich nicht.

  • Man könnte auch noch eval, grep und cut loswerden und das ganze abkürzen:

    Bash
    #!/bin/bash    
    
    prefix="/mnt/sda8/vdr/vdr-current"
    #How long until next record    
    Time_to_next_record=$("${prefix}/svdrpsend" NEXT rel | sed -ne 's/^250.*\ \([[:digit:]]\+\).*$/\1/p')
    
    
    echo "verbl. Sekunden:  $Time_to_next_record"

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • [

    Man könnte auch noch eval, grep und cut loswerden und das ganze abkürzen:

    Code
    Time_to_next_record=$("${prefix}/svdrpsend" NEXT rel | sed -ne 's/^250.*\ \([[:digit:]]\+\).*$/\1/p')


    O.K., ich gestehe: Ich mag ich es lieber lesbarer. Bei all den eleganten |&%##' Konstruktionen weiß ich sonst als "alle Jahre wieder"-Skripter fünf Minuten später überhaupt nicht mehr, was da passieren könnte.


    Ich hatte selbst schon versucht, mit

    Code
    tr -d 'r'

    den Output zu "säubern", aber das bleibt wirkungslos bei mir. Also merci bien für den sed-Befehl.

  • tr -d '\r' müsste aber eigentlich funktionieren: http://stackoverflow.com/a/802439

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!