gelöst - suche elegantere Lösung für...

  • Hi,
    ich knobel gerade an einer eleganteren Lösung für folgendes:


    Code
    plugin=burn  # das gewählte Plugin
    burn=off     # steht auf "off", ist also nicht installiert


    Code
    .../$plugin/plugin.sh --make    # versucht das Plugin zu installieren 
    
    
    .../$plugin/plugin.sh --status  # testet ob die Installation geklappt hat und gibt 0, 1 oder 2 zurück


    Code
    cd $plugin
    plugin_status=`./plugin.sh --status`
    case "$plugin_status" in
      0) p_status="not found";  echo "$plugin=off" > ./tmp.$$ ;;
      1) p_status="installed";  echo "$plugin=on"  > ./tmp.$$ ;;
      *) p_status="error";      echo "$plugin=off" > ./tmp.$$ ;;
    esac    
    . ./tmp.$$
    rm ./tmp.$$


    Als Ergebnis bekomme ich so den neuen Wert für $burn:

    Code
    plugin=burn  # das gewählte Plugin
    burn=on      # "on" wenn installiert, "off" wenn nicht installiert oder Fehler



    Kann das auch ohne schreiben in eine temporäre Datei gelöst werden?


    Gruss
    Marc

    >>>> x-vdr <<<< Installations-Skript für einen VDR mit Debian als Basis

    Einmal editiert, zuletzt von zulu ()

  • Sollte die Ausgabe von plugin.sh auf STDOUT erfolgen, dann sollte das hier tun:


    Zitat

    cd $plugin
    plugin=burn
    [ `./plugin.sh --status` = 1 ] && eval `echo \$plugin`=on || eval `echo \$plugin`=off


    uwe


    [EDIT]Es war ein "=" zu viel[/EDIT]

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

    Einmal editiert, zuletzt von umaier ()

  • Hallo Marc,


    Wo ist genau Dein Problem?


    Geht es nur um diese Zeilen:


    Zitat

    Original von zulu

    Code
    cd $plugin
    plugin_status=`./plugin.sh --status`
    case "$plugin_status" in
      0) p_status="not found";  echo "$plugin=off" > ./tmp.$$ ;;
      1) p_status="installed";  echo "$plugin=on"  > ./tmp.$$ ;;
      *) p_status="error";      echo "$plugin=off" > ./tmp.$$ ;;
    esac    
    . ./tmp.$$
    rm ./tmp.$$


    Code
    cd $plugin
    case `./plugin.sh --status` in
      0) p_status="not found"; plugin=off ;;
      1) p_status="installed"; plugin=on ;;
      *) p_status="error"; plugin=off ;;
    esac


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Hallo Uwe,
    super :]


    Da ich $p_status auch benötige (für eine Textausgabe), habe ich es jetzt so eingebaut:

    Code
    plugin_status=`./plugin.sh --status`
    case "$plugin_status" in
      0) p_status="not found"; eval `echo \$plugin`=off ;;
      1) p_status="installed";  eval `echo \$plugin`=on ;;
      *) p_status="error"; eval `echo \$plugin`=off ;;
    esac


    Gruss
    Marc

  • Hallo Hardy,
    Problem ist gelöst aber weil du gefragt hast:


    Code
    plugin=burn  # $plugin hat den Wert "burn" oder "text2skin" etc.
    burn=on     # $burn hat den Wert "on" oder "off"


    Das Problem kannst du am Terminal nachstellen:

    Code
    a=on
    b=a
    echo $a
    echo $b
    eval `echo \$b`=off
    echo $a


    Gruss
    Marc

  • Ach so, was ich natürlich auch noch sagen wollte:
    das ist natürlich ganz böser, selbstmodifizierender Code:
    * schlecht zu warten
    * schlecht zu verstehen
    * und ganz mies zu debuggen


    Aber ich mach' sowas manchmal auch :D.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Sowas schmerzt ;)
    Aber ist ja Hobby.
    Im Skript sieht das dann auch nochmal ein bisschen anders aus...


    Btw. du bist herzlich eingeladen dir mein Skript mal anzuschauen und mir den einen oder andern Tipp zu geben.


    Gruss
    marc

Jetzt mitmachen!

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