Einträge in settings per script

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Einträge in settings per script

      Hallo,

      wenn ich in der settings datei einträge per script ändern möchte kann ich das hiermit ganz gut machen:

      Quellcode

      1. TARGET_KEY=config.EMC.autoaudio
      2. REPLACEMENT_VALUE=test
      3. CONFIG_FILE=/etc/enigma2/settings
      4. sed -i "s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE
      Mein Problem ist aber: Wie kann ich das erweitern, so dass Einträge die es noch nicht gibt neu angelegt werden? Der Obige code ändert ja nur bereits vorhanden Einträge ab und wenn ein Eintrag nicht vorhanden ist, dann wird gar nichts gemacht.

      Hat jemand eine einfache Lösung zu Hand?

      Danke !
    • Mit echo und grep.
      Rein interessehalber: wozu soll das ganze gut sein? Änderungen kannst du sinnvollerweise doch sowieso nur machen, wenn enigma2 nicht läuft, und dann kannst du doch auch einen Editor benutzen. Was möchtest du automatisieren?
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • ach ich habe mir so ein script gebaut, dass ich verwende um meine einstellungen und plugins bei einem frisch geflashten system zu setzen.

      Ich hab jetzt schon so oft im laufe der Jahre so viele boxen neu geflasht, da wollte ich mir das ganze mal automatisieren, aber alles modular halten.

      Ich habe z.b. ein ipk, einige zusätzliche Dateien und eine settings datei die nur die einstellungen enthält die für das plugin sind in einem ordner und ein script soll dann diese einstellungen in die settings datei eintragen. Natürlich wird e2 vorher beendet...

      kannst du evtl. ein wenig konkreter werden?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von allow2010 ()

    • Aus dem Handgelenk und ungetestet:

      Shell-Script

      1. if [ ! grep -q $suchbegriff $datei ]; then
      2. echo $eintrag >> $datei
      3. fi
      Wenn dein Eintrag nicht in der settings drin ist (grep - q) dann hänge ihn an die Datei an (echo >>)
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • Quellcode

      1. DEST_FILE=./settings.dest
      2. SOURCE_FILE=./settings
      3. IFS="="
      4. while read -r name value
      5. do
      6. #echo "Content of $name is ${value//\"/}"
      7. if [ `grep -c '^$name=' $DEST_FILE` == 0 ]
      8. then
      9. echo "$name=$value" >> $DEST_FILE
      10. echo "Adding $name=${value//\"/}"
      11. else
      12. #sed -i 's/^setting=.*/setting=value/g' $DEST_FILE
      13. sed -i "s/\($name *= *\).*/\1$value/" $DEST_FILE
      14. echo "Changing value of $name to ${value//\"/}"
      15. fi
      16. done < $SOURCE_FILE
      Alles anzeigen
      das hab ich zusammenbekommen, aber iregendwas stimmt das noch nicht, er fügt immer alle hinzu...sieht jemand den Fehler oder kann das eleganter lösen als ich? Danke !

      Ahh, ich seh gerade rdamas post, ich probier das mal aus :)

      Shell-Script

      1. DEST_FILE=./settings.dest
      2. SOURCE_FILE=./settings
      3. IFS="="
      4. while read -r name value
      5. do
      6. echo "Content of $name is ${value//\"/}"
      7. #if [ `grep -c '^$name=' $DEST_FILE` == 0 ]; then
      8. if [ ! `grep -q $name $DEST_FILE` ]; then
      9. echo "$name=$value" >> $DEST_FILE
      10. echo "Adding $name=${value//\"/}"
      11. else
      12. #sed -i 's/^setting=.*/setting=value/g' $DEST_FILE
      13. sed -i "s/\($name *= *\).*/\1$value/" $DEST_FILE
      14. echo "Changing value of $name to ${value//\"/}"
      15. fi
      16. done < $SOURCE_FILE
      Alles anzeigen
      Problem bleibt leider das gleiche, er findet die Einträge nicht und schreibt sie daher immer in die Datei.

      Ich habs nicht rausbekommen...geb erstmal auf, vielleicht findet ja noch jemand den Fehler, es werden immer alle Einträge hinzugefügt, der grep aufruf ist also wahrscheinlich nicht OK.

      Shell-Script

      1. DEST_FILE=./settings.dest
      2. SOURCE_FILE=./settings
      3. IFS="="
      4. while read -r name value
      5. do
      6. echo "Checking if $name already exist in $DEST_FILE"
      7. if [ ! `grep -q $name $DEST_FILE` ]; then
      8. echo "Adding $name=$value to $DEST_FILE"
      9. echo "$name=$value" >> $DEST_FILE
      10. else
      11. echo "Changing value of $name to $value"
      12. sed -i 's/^setting=.*/setting=value/g' $DEST_FILE
      13. #sed -i "s/\($name *= *\).*/\1$value/" $DEST_FILE
      14. fi
      15. done < $SOURCE_FILE
      Alles anzeigen

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von allow2010 ()

    • Hab's mal getestet, was ich gemeint habe:


      Shell-Script

      1. #!/bin/bash
      2. grep -q "config.plugins.fccsetup.history" /etc/enigma2/settings
      3. success=$?
      4. if [ $success = 0 ]; then
      5. echo "config.plugins.fccsetup.history in settings enthalten"
      6. else
      7. echo "Eintrag nicht enthalten"
      8. fi
      Vielleicht hilft dir das ja weiter.

      Das mit den Backquotes funktioniert nicht so wie du möchtest, du möchtest den Return-Wert des Kommandos auswerten. Findet grep nix, wird eine 1 zurückgeliefert, sonst eine 0 als Return-Code.

      (Und noch eine Anmerkung: Backquotes funktionieren zwar, besser benutzt man heute aber $(kommando) statt `kommando` - ist robuster.)
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • Shell-Script

      1. DEST_FILE=./settings.dest
      2. SOURCE_FILE=./settings
      3. IFS="="
      4. while read -r name value
      5. do
      6. #echo "Checking if $name already exist in $DEST_FILE"
      7. if [ `grep -c $name $DEST_FILE` -eq 0 ]
      8. then
      9. #echo "Adding $name=$value to $DEST_FILE"
      10. echo "$name=$value" >> $DEST_FILE
      11. else
      12. #echo "Changing value of $name to $value"
      13. sed -i 's/^setting=.*/setting=value/g' $DEST_FILE
      14. #sed -i "s/\($name *= *\).*/\1$value/" $DEST_FILE
      15. fi
      16. done < $SOURCE_FILE
      Alles anzeigen
      Danke...nach ein wenig gefummel klappt das obige jetzt so wie ich es mir vorgestellt habe...vielleicht braucht es ja mal jemand