Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Rechnen unter der Bourne Shell ?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
tuxic trace
Gast





BeitragVerfasst am: 04. Jun 2002 10:30   Titel: Rechnen unter der Bourne Shell ?

Ist es möglich, unter sh (nicht bash) zu subtrahieren ?

ich denke da an sowas wie

a=20
let ${a}-=4

obiges klappt nun nicht, da rein bash, aber vielleicht gibt es ja bourne-equivalent oder eine andere Möglichkeit.
 

Jochen
Gast





BeitragVerfasst am: 04. Jun 2002 12:55   Titel: Re: Rechnen unter der Bourne Shell ?

In der alten Bourne-Shell gibt es nur eine Möglichkeit zu rechnen: expr(1)

Und da expr(1) nun mal ein externen Programm ist, wird ein Bourne-Shell-Skript, das viel rechnen muss, sicherlich kein Renner werden... Aber so geht es:

code:

VAR=20
VAR=`expr "$VAR" - 4`


Zur Beachtung:
  • Nicht die Blanks um den Operator vergessen.
  • Bei Multiplikation nicht vergessen, den Stern zu entwerten (Dateinamensgenerierung!).
  • Nur Integer-Rechnung.
  • Nur Addition "+", Subtraktion "-", Multiplikation "\*", Division "/" und Modulo "%".

    Wenn Du die bash nicht zur Verfügung hast, schau mal nach, ob Du nicht die Kornshell (ksh) im Zugriff hast. Die kann intern rechnen und Variablen auch direkt im Integerformat speichern, was die Skripte gut beschleunigt. Aus eigener Erfahrung: Ich habe mal die Türme von Hanoi als Bourne-Shellskript mit rekursivem Aufruf, Bourne-Shellskript unter Verwendung von Funktionen und Kornshellskript unter Verwendung von Funktionen. Auf einer alten Kiste dauerte die Lösung des Problems mit 8 Scheiben bei den beiden Bourneshell-Varianten ca. 45 Sekunden, die Kornshell-Lösung 1 Sekunde...

    Jochen
  •  

    tuxic trace
    Gast





    BeitragVerfasst am: 04. Jun 2002 15:08   Titel: Re: Rechnen unter der Bourne Shell ?

    ksh ist da, aber nicht unter /bin. Ich bin immer noch (oder wieder) bei meinem init-umschreiben und wollte von bash auf ash umsteigen (oder gibt es/kennst Du eine andere OSS bourne shell ?) - alerdings ohne auf das schöne "[ ok ]" bei den Diensten zu verzichten Smile Ich muß also nur einmal von der Bildschirmbreite ein paar Zeichen abziehen, da wird expr wohl tun.


    Mit einer virtuellen Verbeugung wie immer tausend Dank.
     

    Jochen
    Gast





    BeitragVerfasst am: 04. Jun 2002 15:45   Titel: Re: Rechnen unter der Bourne Shell ?

    ash? Das ist was anderes. Aus der man-Page zu ash:



    Arithmetic expansion provides a mechanism for evaluating an arithmetic
    expression and substituting its value. The format for arithmetic expan-
    sion is as follows:

    $((expression))

    The expression is treated as if it were in double-quotes, except that a
    double-quote inside the expression is not treated specially. The shell
    expands all tokens in the expression for parameter expansion, command
    substitution, and quote removal.

    Next, the shell treats this as an arithmetic expression and substitutes
    the value of the expression.


    Also einfach
    code:

    VAR=20
    VAR=$(( $VAR - 4 ))



    Wenn Du vielleicht doch bei der bash bleiben willst: Da gibt es "printf" als eingebaute Shell-Funktion, die das gleiche macht wie in C. Wenn man also einen Text ohne Newline in strikt 60 Zeichen Breite, aufgefüllt mit Blanks haben will, braucht man nur

    printf "%-60s" "Dienst x:"

    verwenden. Gibt es auch als Stand-Alone Binary unter /usr/bin.

    Jochen
     

    Rossi
    Gast





    BeitragVerfasst am: 05. Jun 2002 8:06   Titel: Re: Rechnen unter der Bourne Shell ?

    Ich war der Meinung, die ash sei eine freie "bug for bug" Reimplemenierung der bourne shell ... hab ich wohl was falsches gelesen.

    Wenn dem nicht so ist, würde es aber erklären, warum mein Rechner nicht mehr hochfährt, wenn ich "ln -f ash sh" mache - das erste rc-Skript ist recht simpel und sollte eigentlich sh kompatibel sein.
     

    Jochen
    Gast





    BeitragVerfasst am: 05. Jun 2002 8:37   Titel: Re: Rechnen unter der Bourne Shell ?

    Nein, die ash will zwar abwärtskompatibel zur Bourne-Shell sein, hat aber ein paar Erweiterungen, wie z.B. die Tilde-Expansion ("cd ~user" um ins Home-Directory von user zu kommen), die o.a. Arithmetic Expansion, Aliases, lokale Variable in Funktionen und noch ein paar Kleinigkeiten mehr.

    Wenn das Skript aber schon Bourne-Shell-kompatibel ist, dürfte ash damit keine Schwierigkeiten haben, ausser wenn ein sehr spezieller Falle eintritt. Wenn das Skript eher einfach ist, liegt die Fehlerursache vielleicht woanders. Startet das Skript überhaupt korrekt auf, oder streckt schon direkt die Shell die Beine? Ggf. findet er eine benötigte Bibliothek zur Boot-Zeit nicht (unter /usr/lib, was noch nicht gemountet ist?) Das einfachste ist ein Check mittels "ldd /bin/ash" oder indem Du die ash statisch übersetzt.

    Jochen
     

    Beiträge vom vorherigen Thema anzeigen:   
         Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
    Seite 1 von 1

     
    Gehen Sie zu:  

    Powered by phpBB © phpBB Group
    pro_linux Theme © 2004 by Mandaxy