Fehler bei fehlerhafter Nummer mit Operatorbedingung für Linux-Float-Variablenwertvergleich

445
Pimp Juice IT

Ich versuche, eine Logik auf einem Antminer S9 zu testen, bei der ich die Ausgabe eines Befehls bekomme und dann von diesem Ausgang einen bestimmten Float-Wert nehme, damit ich diesen Wert in eine Variable schreiben und mit einer bedingten Logik verarbeiten kann, um einige auszuführen prüft und so.

Ich lerne immer noch Linux-Shell- und Bash-Scripting. Ich bin also weit davon entfernt, ein Experte zu sein. Ich kann jedoch etwas einfaches übersehen, aber ich kann nicht den Variablenwert von 14167.25prüfen lassen, ob er größer ist als 1ein einfaches Beispiel. Ich denke, es liegt daran, dass dieser Wert als String-Typ festgelegt ist und es muss ein Wert sein, intund ich kann ihn nicht leicht herausfinden, also dachte ich, ich würde andere um Hilfe bitten.

Befehl

cool=$(/usr/bin/bmminer-api stats | grep -o 'GHS 5s].*' | cut -f2 -d'>') 

Hinweis: Dies scheint den korrekten Wert wie erwartet 14167.25wiederzugeben. Ich bekomme jedoch einen Fehler in der Bedingungslogik, um diese Zahl mit einer anderen zu vergleichen.


Mein Problem beginnt hier, denke ich ...

Bedingter Befehl

if [ $cool -gt 1 ]; then echo it is greater than 1; fi 

Der Fehler: Dies gibt mir einen Fehler von sh: 14167.25: bad number.


Andere Sachen, die ich versucht habe

Ich habe versucht, das zu verdoppeln [[ $cool -gt 1 ]]und auch und $($cool)und "$cool"und wahrscheinlich ein paar andere Variationen für die Variable innerhalb der doppelten und einfachen eckigen Klammer der if-Anweisung, und nichts scheint mir das erwartete Ergebnis zu geben. Anfängerfehler vielleicht !!

Ich habe auch diese Beiträge gelesen und verschiedene erfolglose Dinge ausprobiert, die ich wahrscheinlich nicht auflisten sollte:


Andere Details

uname -sr Linux 3.14.0-xilinx-ge8a2f71-dirty 

" bmminer-api stats" Befehlsausgabe

Reply was 'STATUS=S,When=1012053,Code=70,Msg=BMMiner stats,Description=bmminer 1.0.0|BMMiner=2.0.0,Miner=16.8.1.3,CompileTime=Mon Nov 6 17:17:48 CST 2017,Type=Antminer S9|STATS=0,ID=EE50,Elapsed=964517,Calls=0,Wait=0.000000,Max=0.000000,Min=99999999.000000,GHS 5s=14167.25,GHS av=14115.38,miner_count=3,frequency=662,fan_num=2,fan1=0,fan2=0,fan3=5640,fan4=0,fan5=0,fan6=6120,fan7=0,fan8=0,temp_num=3,temp1=0,temp2=0,temp3=0,temp4=0,temp5=0,temp6=64,temp7=61,temp8=65,temp9=0,temp10=0,temp11=0,temp12=0,temp13=0,temp14=0,temp15=0,temp16=0,temp2_1=0,temp2_2=0,temp2_3=0,temp2_4=0,temp2_5=0,temp2_6=74,temp2_7=72,temp2_8=76,temp2_9=0,temp2_10=0,temp2_11=0,temp2_12=0,temp2_13=0,temp2_14=0,temp2_15=0,temp2_16=0,temp3_1=0,temp3_2=0,temp3_3=0,temp3_4=0,temp3_5=0,temp3_6=0,temp3_7=0,temp3_8=0,temp3_9=0,temp3_10=0,temp3_11=0,temp3_12=0,temp3_13=0,temp3_14=0,temp3_15=0,temp3_16=0,freq_avg1=0.00,freq_avg2=0.00,freq_avg3=0.00,freq_avg4=0.00,freq_avg5=0.00,freq_avg6=656.22,freq_avg7=650.38,freq_avg8=656.88,freq_avg9=0.00,freq_avg10=0.00,freq_avg11=0.00,freq_avg12=0.00,freq_avg13=0.00,freq_avg14=0.00,freq_avg15=0.00,freq_avg16=0.00,total_rateideal=14001.40,total_freqavg=654.49,total_acn=189,total_rate=14167.24,chain_rateideal1=0.00,chain_rateideal2=0.00,chain_rateideal3=0.00,chain_rateideal4=0.00,chain_rateideal5=0.00,chain_rateideal6=4666.72,chain_rateideal7=4667.13,chain_rateideal8=4667.54,chain_rateideal9=0.00,chain_rateideal10=0.00,chain_rateideal11=0.00,chain_rateideal12=0.00,chain_rateideal13=0.00,chain_rateideal14=0.00,chain_rateideal15=0.00,chain_rateideal16=0.00,temp_max=65,Device Hardware%=0.0000,no_matching_work=502,chain_acn1=0,chain_acn2=0,chain_acn3=0,chain_acn4=0,chain_acn5=0,chain_acn6=63,chain_acn7=63,chain_acn8=63,chain_acn9=0,chain_acn10=0,chain_acn11=0,chain_acn12=0,chain_acn13=0,chain_acn14=0,chain_acn15=0,chain_acn16=0,chain_acs1=,chain_acs2=,chain_acs3=,chain_acs4=,chain_acs5=,chain_acs6= oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo,chain_acs7= oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo,chain_acs8= oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo,chain_acs9=,chain_acs10=,chain_acs11=,chain_acs12=,chain_acs13=,chain_acs14=,chain_acs15=,chain_acs16=,chain_hw1=0,chain_hw2=0,chain_hw3=0,chain_hw4=0,chain_hw5=0,chain_hw6=192,chain_hw7=152,chain_hw8=155,chain_hw9=0,chain_hw10=0,chain_hw11=0,chain_hw12=0,chain_hw13=0,chain_hw14=0,chain_hw15=0,chain_hw16=0,chain_rate1=,chain_rate2=,chain_rate3=,chain_rate4=,chain_rate5=,chain_rate6=4750.90,chain_rate7=4729.46,chain_rate8=4686.88,chain_rate9=,chain_rate10=,chain_rate11=,chain_rate12=,chain_rate13=,chain_rate14=,chain_rate15=,chain_rate16=,chain_xtime6=,chain_xtime7={},chain_xtime8=,chain_offside_6=0,chain_offside_7=0,chain_offside_8=0,chain_opencore_6=1,chain_opencore_7=1,chain_opencore_8=0,miner_version=16.8.1.3,miner_id=999c7401123b999c|' [STATUS] => ( [STATUS] => S [When] => 1012053 [Code] => 70 [Msg] => BMMiner stats [Description] => bmminer 1.0.0 )v [BMMiner2.0.0] => ( [BMMiner] => 2.0.0 [Miner] => 16.8.1.3 [CompileTime] => Mon Nov 6 17:17:48 CST 2017 [Type] => Antminer S9 ) [STATS0] => ( [STATS] => 0 [ID] => EE50 [Elapsed] => 964517 [Calls] => 0 [Wait] => 0.000000 [Max] => 0.000000 [Min] => 99999999.000000 [GHS 5s] => 14167.25 [GHS av] => 14115.38 [miner_count] => 3 [frequency] => 662 [fan_num] => 2 [fan1] => 0 [fan2] => 0 [fan3] => 5640 [fan4] => 0 [fan5] => 0 [fan6] => 6120 [fan7] => 0 [fan8] => 0 [temp_num] => 3 [temp1] => 0 [temp2] => 0 [temp3] => 0 [temp4] => 0 [temp5] => 0 [temp6] => 64 [temp7] => 61 [temp8] => 65 [temp9] => 0 [temp10] => 0 [temp11] => 0 [temp12] => 0 [temp13] => 0 [temp14] => 0 [temp15] => 0 [temp16] => 0 [temp2_1] => 0 [temp2_2] => 0 [temp2_3] => 0 [temp2_4] => 0 [temp2_5] => 0 [temp2_6] => 74 [temp2_7] => 72 [temp2_8] => 76 [temp2_9] => 0 [temp2_10] => 0 [temp2_11] => 0 [temp2_12] => 0 [temp2_13] => 0 [temp2_14] => 0 [temp2_15] => 0 [temp2_16] => 0 [temp3_1] => 0 [temp3_2] => 0 [temp3_3] => 0 [temp3_4] => 0 [temp3_5] => 0 [temp3_6] => 0 [temp3_7] => 0 [temp3_8] => 0 [temp3_9] => 0 [temp3_10] => 0 [temp3_11] => 0 [temp3_12] => 0 [temp3_13] => 0 [temp3_14] => 0 [temp3_15] => 0 [temp3_16] => 0 [freq_avg1] => 0.00 [freq_avg2] => 0.00 [freq_avg3] => 0.00 [freq_avg4] => 0.00 [freq_avg5] => 0.00 [freq_avg6] => 656.22 [freq_avg7] => 650.38 [freq_avg8] => 656.88 [freq_avg9] => 0.00 [freq_avg10] => 0.00 [freq_avg11] => 0.00 [freq_avg12] => 0.00 [freq_avg13] => 0.00 [freq_avg14] => 0.00 [freq_avg15] => 0.00 [freq_avg16] => 0.00 [total_rateideal] => 14001.40 [total_freqavg] => 654.49 [total_acn] => 189 [total_rate] => 14167.24 [chain_rateideal1] => 0.00 [chain_rateideal2] => 0.00 [chain_rateideal3] => 0.00 [chain_rateideal4] => 0.00 [chain_rateideal5] => 0.00 [chain_rateideal6] => 4666.72 [chain_rateideal7] => 4667.13 [chain_rateideal8] => 4667.54 [chain_rateideal9] => 0.00 [chain_rateideal10] => 0.00 [chain_rateideal11] => 0.00 [chain_rateideal12] => 0.00 [chain_rateideal13] => 0.00 [chain_rateideal14] => 0.00 [chain_rateideal15] => 0.00 [chain_rateideal16] => 0.00 [temp_max] => 65 [Device Hardware%] => 0.0000 [no_matching_work] => 502 [chain_acn1] => 0 [chain_acn2] => 0 [chain_acn3] => 0 [chain_acn4] => 0 [chain_acn5] => 0 [chain_acn6] => 63 [chain_acn7] => 63 [chain_acn8] => 63 [chain_acn9] => 0 [chain_acn10] => 0 [chain_acn11] => 0 [chain_acn12] => 0 [chain_acn13] => 0 [chain_acn14] => 0 [chain_acn15] => 0 [chain_acn16] => 0 [chain_acs1] => [chain_acs2] => [chain_acs3] => [chain_acs4] => [chain_acs5] => [chain_acs6] => oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo [chain_acs7] => oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo [chain_acs8] => oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo oooooooo ooooooo [chain_acs9] => [chain_acs10] => [chain_acs11] => [chain_acs12] => [chain_acs13] => [chain_acs14] => [chain_acs15] => [chain_acs16] => [chain_hw1] => 0 [chain_hw2] => 0 [chain_hw3] => 0 [chain_hw4] => 0 [chain_hw5] => 0 [chain_hw6] => 192 [chain_hw7] => 152 [chain_hw8] => 155 [chain_hw9] => 0 [chain_hw10] => 0 [chain_hw11] => 0 [chain_hw12] => 0 [chain_hw13] => 0 [chain_hw14] => 0 [chain_hw15] => 0 [chain_hw16] => 0 [chain_rate1] => [chain_rate2] => [chain_rate3] => [chain_rate4] => [chain_rate5] => [chain_rate6] => 4750.90 [chain_rate7] => 4729.46 [chain_rate8] => 4686.88 [chain_rate9] => [chain_rate10] => [chain_rate11] => [chain_rate12] => [chain_rate13] => [chain_rate14] => [chain_rate15] => [chain_rate16] => [chain_xtime6] =>  [chain_xtime7] => {} [chain_xtime8] =>  [chain_offside_6] => 0 [chain_offside_7] => 0 [chain_offside_8] => 0 [chain_opencore_6] => 1 [chain_opencore_7] => 1 [chain_opencore_8] => 0 [miner_version] => 16.8.1.3 [miner_id] => 999c7401123b999c ) 
1

1 Antwort auf die Frage

3
l0b0

Wie in "Wie kann ich mit Gleitkommazahlen anstelle von ganzen Zahlen berechnen?" Post ist der Hauptpunkt, dass "die eingebaute Arithmetik von BASH nur Ganzzahlen verwendet" und Sie mit einem Float-Datentyp arbeiten, mit dem BASH keine Vergleichsoperationen durchführen kann .

Problemumgehung

Als Problemumgehung, wie im Beitrag "Fließkommazahlvergleich in Shell-Skript" beschrieben, können Sie bcdie Vergleichsoperationen der Float-Datentypen ausführen. Sie können das Ergebnis als wahr oder falsch auswerten und den bedingten Logikprozess entsprechend seinem Ergebnis festlegen.

Beispiellogik

if [ "$(echo "$cool > 1" | bc)" -eq 1 ] then echo "$ is greater than 1" fi 
Dies scheint das zu sein, was ich brauchte und das, was ich total übersehen habe. Natürlich verwende ich für diesen Vorgang einen Float-Datentyp. Das brachte mich in die richtige Richtung. Pimp Juice IT vor 5 Jahren 0
Verwendet den `[" $ (echo "$ cool> 1" | bc) "-eq 1]` `über der` [$ (bc <<< "$ cool> 1") -eq 1] `- Syntax rein persönlichen Vorlieben dass Sie wissen oder hat der andere Weg eine Art Gotcha oder etwas? Pimp Juice IT vor 5 Jahren 0
"<<<" ist ein [bashism] (https://mywiki.wooledge.org/Bashism); Meine Änderung macht es POSIX-kompatibel. In der Frage wird Bash erwähnt, aber nicht die Tags. Ich dachte, es sei besser, auf der sicheren Seite zu sein. l0b0 vor 5 Jahren 2