Frage an math, divide, linux, command-line – Wie teile ich in der Linux-Konsole?

70

Ich muss Variablen und ich möchte den Wert von einer durch die andere geteilt finden. Welche Befehle soll ich dazu verwenden?

@ frank-v Bash kann zum Programmieren verwendet werden ... auch, dass der Link zur FAQ nicht funktioniert chomp
Hat das wirklich etwas mit Programmierung zu tun? [stackoverflow.com/faq] Frank V

Deine Antwort

12   die antwort
2

was Sie mit der Antwort von raytrace tun können. Sie können die Standardausgabe eines anderen Shell-Aufrufs mit Backticks verwenden, um dann einige Berechnungen durchzuführen. Zum Beispiel wollte ich die Dateigröße der Top-100-Zeilen aus ein paar Dateien kennen. Die Originalgröße vonwc -c ist in Bytes, ich möchte Kilobytes wissen. Folgendes habe ich getan:

echo `cat * | head -n 100 | wc -c` / 1024 | bc -l
5

Linux-Konsole was meinen SieBash.

ObX undY sind Ihre Variablen,$(($X / $Y)) gibt zurück, wonach du fragst.

Sie brauchen die $ 's nicht für die Variablen Draemon
37
echo 5/2 | bc -l

2.

Diese '-l'-Option in' bc 'ermöglicht schwebende Ergebnisse

Cool; mit-lStandardmäßig erhalten Sie 20 Dezimalstellenund Es wird eine Mathematikbibliothek geladen, die zusätzliche Funktionen wie Sinus definiert. Um die Anzahl der Nachkommastellen explizit anzugeben, stellen Sie dem Ausdruck Folgendes voranscale={numPlaces}; (auch), wie in der Antwort von @ user1504475 gezeigt. Mit anderen Worten:-l ist eine bequeme Alternative zur Angabescale=20;, ist jedoch durch das Laden der Bibliothek mit Performance-Kosten verbunden - die tatsächlichen Auswirkungen scheinen jedoch vernachlässigbar zu sein. mklement0
-1

dieren, aber Dezimalzahlen sind nicht so einfach. Wenn Sie 2 Zahlen wie 3.14 und 2.35 haben und die Zahlen dann teilen, lautet der Code Division =echo 3.14 / 2.35 | bc echo "$ Division" die Anführungszeichen sind unterschiedlich. Seien Sie nicht verwirrt, es befindet sich direkt unter der Esc-Taste auf Ihrer Tastatur. DER EINZIGE UNTERSCHIED IST DER | bc und auch hier arbeitet echo als Operator für die arithmetischen Berechnungen anstelle von Drucken. Also hatte ich das Echo "$ Division" hinzugefügt, um den Wert zu drucken. Lassen Sie mich wissen, ob es bei Ihnen funktioniert. Vielen Dank.

Das sind keine Zitate. Sie sind akute Akzente. Sie werden nicht angezeigt, da StackOverflow sie zum Hervorheben von Codeausschnitten verwendetsome code here wurde nur in die akuten Akzente gehüllt. Chris Sharp
Die Anführungszeichen werden hier nicht angezeigt. Setzen Sie also die Anführungszeichen (``) nach = und nach bc. SHIBLI
11

Ich benutze immer noch lieberdc, das ist ein RPN-Rechner, so würde eine schnelle Sitzung zum Teilen von 67 durch 18 mit einer Genauigkeit von 4 Stellen aussehen

>dc
4k
67
18/p
3.7222
q
>

Offensichtlich viel mehr zur Verfügung:Mann dc

Ein paar Hinweise, um evtl. einen Ausflug zu rettenman: RPN = Umgekehrte polnische Notation; Kurz gesagt: Sie geben zuerst die Operanden und dann den Operator ein. Eine Kündigungp wird zur Ausgabe des Ergebnisses benötigt. Die nicht interaktive Version der obigen Berechnung lautet:dc -e '4k 67 18 / p'. Vorsichtsmaßnahme: Präzision nicht einstellen (mit{numPlaces}k) ist standardmäßig 0, d. h. eine Ganzzahldivision. mklement0
11

awk Dies ist ein Dienstprogramm / eine Sprache für die Datenextraktion

z.B. für 1.2 / 3.4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941
2

b:

echo $((a/b))
1

Sie sollten versuchen, Folgendes zu verwenden:

echo "scale=4;$variablename/3"|bc
16

bc", einem willkürlichen Präzisionsrechner.

variable=$(echo "OPTIONS; OPERATIONS" | bc)

Ex:

my_var=$(echo "scale=5; $temp_var/100 + $temp_var2" | bc)

wobei "scale = 5" die Genauigkeit ist.

man bc 

kommt mit mehreren Anwendungsbeispielen.

Cool; eins ist zu beachten: nicht einstellenscale Standardmäßig wird eine Ganzzahldivision verwendet, sofern Sie dies nicht angeben-l, wie @raytrace unten notiert, was anscheinend standardmäßig 20 Dezimalstellen ergibt, aber auch eine Bibliothek mit zusätzlichen Funktionen lädt. mklement0
1

Sie können auch perl -e verwenden

perl -e 'print 67/8'
65

Umschließen Sie in der Bash-Shell arithmetische Ausdrücke mit$(( ... ))

$ echo $(( 7 / 3 ))
2

Obwohl ich denke, dass Sie auf ganze Zahlen beschränkt sind.

Ja, Bash ist auf ganzzahlige Mathematik beschränkt. mkb
8

können Sie Folgendes tun:

>echo $((5+6))
11
>echo $((10/2))
5
>echo $((10/3))
3

Verwandte Fragen