Kiffer: Rechnen mit bc

Hallo,

ich möchte shell Kommandos wie

echo vier geteilt durch drei gleich $(./division.sh 4 3).

ermöglichen. Das Programm ./division.sh soll also in diesem
Beispiel Paramter_1 durch Parameter_2 dividieren. Da ich keine
Möglichkeit gefunden habe, dem bc die beiden Parameter zu
übergeben, habe ich mir folgende Krücke einfallen lassen.

Listing von ./division.sh:

#!/bin/sh
  /usr/bin/env bc -l <<my_delimiter
  scale=2
  $1/$2
  my_delimiter

Geht das einfacher? Ohne Here-Dokument? Oder entspricht das
gängiger Programmiertechnik mit bc?

Danke, der Kiffer

  1. Habe ich mir den falschen Nickname zugelegt?

    1. Hallo,

      Habe ich mir den falschen Nickname zugelegt?

      naja, zumindest etwas zweifelhaft. ;-)
      Das hätte mich aber nicht abgeschreckt; ich habe mich deshalb rausgehalten, weil ich *keinen* Schimmer habe, was du mit "bc" meinst (und nach einem zweibuchstabigen Begriff ohne weitere Anhaltspunkte zu googeln, ist auch ziemlich sinnlos).

      So long,
       Martin

      --
      Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
      1. Tach,

        Das hätte mich aber nicht abgeschreckt; ich habe mich deshalb rausgehalten, weil ich *keinen* Schimmer habe, was du mit "bc" meinst (und nach einem zweibuchstabigen Begriff ohne weitere Anhaltspunkte zu googeln, ist auch ziemlich sinnlos).

        http://en.wikipedia.org/wiki/Bc_programming_language

        mfg
        Woodfighter

      2. Hallo auch,

        Hallo,

        Habe ich mir den falschen Nickname zugelegt?

        naja, zumindest etwas zweifelhaft. ;-)
        Das hätte mich aber nicht abgeschreckt; ich habe mich deshalb rausgehalten, weil ich *keinen* Schimmer habe, was du mit "bc" meinst (und nach einem zweibuchstabigen Begriff ohne weitere Anhaltspunkte zu googeln, ist auch ziemlich sinnlos).

        So long,
        Martin

        Schön, das du dich nicht abschrecken lässt!!! In Unix gibts ne Menge
        "Zweibuchstabenprogramme. Beispiele:

        bc - basic calcualtor (je nach Umgebung sind Rechnungen auf merhere
             tausend Nachkommastellen möglich)
        dc - desk calcualtor (umgekehrten polnischen Notation)
        sh - die Shell
        ed - editor
        vi - noch ein editor (für "visual")
        dd - disk dump
        und und und .....

        Sorry wenn ich dich verwirrt habe. War keine Absicht.

        Noch ein kleiner Hinweis: wenn man nach der Bedeutung vom Abk.
        sucht hat sich nach meiner Meinung wikipedia bewährt. Nach
        wenigen Sekunden hat mans meist. Googeln hilft da wenig.

        Danke trotzdem - und ich hoffe du weisst jetzt etwas mehr über die
        Programme auf deinem Rechner (soll nicht Arrogant gemeint sein!).

        Und Tschüß, der Kiffer

        1. Hi,

          Hallo,
          [...]
          So long,
          Martin

          für mich ohne TOFU, besten Dank. Fürs Forum bitte auch.

          Schön, das du dich nicht abschrecken lässt!!!

          ;-)

          In Unix gibts ne Menge "Zweibuchstabenprogramme.

          Ich weiß.

          bc - basic calcualtor (je nach Umgebung sind Rechnungen auf merhere tausend Nachkommastellen möglich)
          dc - desk calcualtor (umgekehrten polnischen Notation)
          sh - die Shell
          ed - editor
          vi - noch ein editor (für "visual")
          dd - disk dump

          Von den genannten sind mir sh, ed, vi und ganz besonders dd bekannt. Aber mit bc und dc hatte ich noch keinen Vertrag.

          Noch ein kleiner Hinweis: wenn man nach der Bedeutung vom Abk. sucht hat sich nach meiner Meinung wikipedia bewährt. Nach wenigen Sekunden hat mans meist.

          Manchmal.

          Danke trotzdem - und ich hoffe du weisst jetzt etwas mehr über die
          Programme auf deinem Rechner (soll nicht Arrogant gemeint sein!).

          Auf *meinem* Rechner? Nö. Auf meinem Rechner habe ich weder bc noch dc. Auf den Windows-Büchsen sowieso nicht; auf Ubuntu und Gentoo AFAIK auch nicht.

          Ciao,
           Martin

          --
          Das Leben ist lebensgefährlich und endet meistens tödlich.
    2. Tach,

      Habe ich mir den falschen Nickname zugelegt?

      nö, du fragst bloss in einem HTML-(und andere Webtechniken)-Forum nach einem recht speziellen Kommandozeilentool, und das auch noch am Wochenende.

      mfg
      Woodfighter

  2. Tach,

    #!/bin/sh
      /usr/bin/env bc -l <<my_delimiter
      scale=2
      $1/$2
      my_delimiter

    ich komme mir zwar vor wie bei "useless use of cat", aber:

      
    #!/bin/bash  
    echo "scale=2; "$1"/"$2";" | bc  
    
    

    wäre schonmal kürzer.

    mfg
    Woodfighter

    1. Tach,

      Tach auch

      ...

      ich komme mir zwar vor wie bei "useless use of cat", aber:

      #!/bin/bash
      echo "scale=2; "$1"/"$2";" | bc

      
      > wäre schonmal kürzer.  
      >   
      > mfg  
      > Woodfighter  
        
      Der Code in dem Beispiel war mit absicht einfach gehalten. Im Kern gehts  
      darum, aus einer Shell Umgebung ein Komplexers bc Progamm aufzurufen  
      und dem bc Programm Variablen zu übergeben.  
        
      Wenn das bc Programm komplexer wird, ist "echo" nicht mehr praktikabel.  
      Und wenn man das bc Programm in einem File hät und mit cat nach bc piped  
      dreigt man die Variablen nicht rein (oder nur sehr scwer).  
        
      Meine Lösung finde ich auch nicht schön - deshalb ja meine Anfrage. Ich  
      habe keine Idee, wie sich die Entwickler von bc das vorgestellt haben.  
        
      Danke trotzdem für deine Antwort!!! der Kiffer