BASH: eine variable runden

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

BASH: eine variable runden

Beitrag von deb » 09.11.2005 12:58:34

Hi möchte in einem Bash-Script den apache ab einer bestimmt Datenmenge stoppen.

Die Zeilen

Code: Alles auswählen

traf=27.43 < Beispielwert - richtige Datenquelle währe jetzt zu komplex
if [ $traf -gt 158 ]; then
    apache2ctl stop
fi
./traffic.sh: line 7: [: 24.23: integer expression expected

Wenn ich die Fehlermeldung richtig interpretiere, kommt die Bash mit dem Punkt nicht klar.

Wie kann ich $traf auf- bzw. abrunden?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 09.11.2005 13:29:23

Hm, das einfachste waere, am Punkt einfach abzuschneiden. Allerdings rundest du dann immer ab.
Ansonsten muesstest du halt ne Fallunterscheidung machen, was nach dem Punkt kommt, dann abschneiden und evtl noch ne 1 addieren.

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 09.11.2005 13:46:16

nepos hat geschrieben:Hm, das einfachste waere, am Punkt einfach abzuschneiden. Allerdings rundest du dann immer ab.
Ansonsten muesstest du halt ne Fallunterscheidung machen, was nach dem Punkt kommt, dann abschneiden und evtl noch ne 1 addieren.
Einen Schritt weiter...

Code: Alles auswählen

traf=23.44
traf=`echo $traf | tr "." ","`
echo $[traf+1]
Aber das non plus ultra ist das noch nicht :-(

puma_rsch
Beiträge: 29
Registriert: 28.10.2005 16:27:23

Beitrag von puma_rsch » 09.11.2005 23:13:48

abschneiden und solange apache nicht anhalten wie der gecuttete Wert < 158 ist

is doch das selbe ohne umständliches gerunde

alternative wenns wirklich genauer sein soll

Punkt eliminieren
z.B. so

Code: Alles auswählen

echo 22.33|cut --output-delimiter= -d\. -f1,2
und schauen ob das ergebnis z.B. gt 15750 ist

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 10.11.2005 10:19:26

puma_rsch hat geschrieben:....
Punkt eliminieren
z.B. so

Code: Alles auswählen

echo 22.33|cut --output-delimiter= -d\. -f1,2
Werde das gleich mal ausprobieren.

Bei diesen Werten bekam ich die Nacht leider crontab-Fehlermeldungen:
79,08
81,08
82,08

Scheinbar mag die BASH überhaupt kein Float :-(

Gruß & Dank
Zuletzt geändert von deb am 10.11.2005 11:01:45, insgesamt 1-mal geändert.

puma_rsch
Beiträge: 29
Registriert: 28.10.2005 16:27:23

Beitrag von puma_rsch » 10.11.2005 10:22:46

81,08
Ist auch kein Integer :D

Code: Alles auswählen

 echo 22,33|cut --output-delimiter= -d, -f1,2 
muss es dann für mit Komma lauten

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 10.11.2005 11:01:22

puma_rsch hat geschrieben:
Ist auch kein Integer :D
Sorry, ich meinte float. -> Korrigiert.
Muss leider nebenbei hier ein bissle arbeiten *g*
Zuletzt geändert von deb am 11.11.2005 02:50:07, insgesamt 1-mal geändert.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 10.11.2005 11:21:40

Schaut mal hier:

http://forums.devshed.com/archive/t-548 ... Bash-Shell

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Antworten