.titleBar { margin-bottom: 5px!important; }

Probleme mit Shell-Scripts

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von profmaad, 8 Okt. 2006.

  1. profmaad

    profmaad Neuer User

    Registriert seit:
    4 Okt. 2006
    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 profmaad, 8 Okt. 2006
    Zuletzt bearbeitet: 8 Okt. 2006
    Hallo alle miteinander,

    ich versuche mir derzeit ein paar nette Shell-Scripts für meine Box (Fritz!Box WLAN 3030) zu schreiben.

    Jedoch kämpfe ich derzeit mit den eingeschränkten Möglichkeiten der ASH-Shell gegenüber der BASH, die ich ja leider auf der Box nicht zur Verfügung habe.

    Kann mir beispielsweise jemand erklären, wie entsprechender Code auf der Box aussehen müsste:
    > declare -i rest=$1
    > rest=rest/2

    Ich bekomme es zwar hin, Variablen anzulegen und mit Strings zu füllen. Allerdings habe ich es noch nicht hinbekommen, mit ihnen zu rechnen.

    Kann mir da jemand weiterhelfen?

    Danke im Voraus und Ciao,
    Prof. MAAD
     
  2. buehmann

    buehmann Aktives Mitglied

    Registriert seit:
    11 Juni 2005
    Beiträge:
    1,810
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi, du brauchst 'let' (funktioniert wie bei der bash):
    Code:
    let rest=$1
    let rest=rest/2
    
    Gruß,
    Andreas
     
  3. profmaad

    profmaad Neuer User

    Registriert seit:
    4 Okt. 2006
    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielen Dank für die schnelle Antwort.

    Das hat mein Problem gelöst.
    Jedoch stehe ich nun vor einem neuem Problem.

    Wie schaffe ich es, einem Script das Ergebnis eines anderen Scripts als Parameter zu übergeben.

    Im Klartext:
    Ich habe ein Script "sh1.sh", dass als Ergebnis eine Zahl auf der Konsole ausspukt. Ich habe außerdem ein Script "sh2.sh", dass eine Zahl als Parameter braucht und intern auf diese per $1 zugreift.
    Wie schaffe ich es, dass Script "sh2.sh" mit der Ausgabe von "sh1.sh" als Parameter $1 aufgerufen wird?

    Danke im Voraus und Ciao,
    Prof. MAAD
     
  4. gandalf94305

    gandalf94305 Guest

    Wenn sh1.sh dies ist:
    Code:
    #! /bin/sh
    
    echo 17
    exit 0
    
    Und Script sh2.sh dies hier
    Code:
    #! /bin/sh
    
    if [ "x$1" = "x" ] ; then
      value=1
    else
      value="$1"
    fi
    
    let result=$value/3
    echo $result
    exit 0
    
    dann kannst Du das Ergebnis vom ersten Script in das zweite so übergeben:
    Code:
    # ./sh2.sh `./sh1.sh`
    
    Beachte, daß dies Backquotes, keine normalen Quotes sind.

    Es wäre auch möglich, über Standard-Input zu gehen. Dann müßte Script sh2.sh jedoch so aussehen
    Code:
    #! /bin/sh
    
    value=`cat`
    
    let result=$value/3
    echo $result
    exit 0
    
    und der Aufruf dann
    Code:
    # ./sh1.sh | ./sh2.sh
    
    Na? ;-)

    --gandalf.
     
  5. profmaad

    profmaad Neuer User

    Registriert seit:
    4 Okt. 2006
    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielen Dank nochmals, das hat funktioniert.

    Nun noch eine, hoffentlich, letzte Frage, die allerdings in eine andere Richtung geht:
    Gibt es eine Möglichkeit, zu verhindern, dass die Box von sich aus den Status der LED's verändert.
    Ich tue dies in einem Script, jedoch lässt meine Box von sich aus immer die Power-LED blinken und schaltet die LAN-LED an, wenn ein Kabel angesteckt ist.

    Mir ist schon klar, dass das das normale Verhalten der Box ist. Ich möchte es jedoch "abstellen", da ich über die LED's andere Status-Infos ausgeben lasse, und mir die Box also immer "dazwischenfunkt".

    Hat da jemand eine Idee?

    Danke im Voraus und Ciao,
    Prof. MAAD