farbiger Akkustatus in Bash - Script

Hi leute,

EDIT:

es ist geschafft ,ich habe das script soeben fertig gestellt ,für alle die intersse daran haben finden es hier unter scripts zum downloden.

http://www.nakedchef.de.vu

------------------------------------------------------------------------------------------------------------------------

ich habe ur zeit lange weile und daher sitze ich an einem bash- script, as den jeweiligen batterystatus in der bash anzeigen soll.

mittlerweile bin ich auch soweit, dass ich den batteystatus anzeigen kann ohne das irgednwelchen zeichen. zumindest fast. leider ist dort immernoch das %- Zeichen, was daran hindert einen if- Vergleich zu machen, da ein vergleich nur zwischen 2 integer zahlen möglich ist. im moment sieht das script so aus :

Code:
#! /bin/bash
#
#

STATUS=$(acpi |cut -f 2 -d ","|sed -e "s/ //g")

echo $STATUS

könnt ihr mir einen tipp geben, wie ich ich auch noch das %- Zeichen aus der anzeige bekomme oder eine möglichkeit wie ich die strings vergleichen kann?

(der vergleich ist um einen farbliche difernezierung zwischen einzelnen werten der ausgabe zu machen z.b.

if [ $STATU -lt 50 ]; then echo %STATUS #in gelb

elif [ $STATUS -lt 25]; then echo $STATUS #in rot

else [ $STATUS -lt 5]; then echo Batteriestatus kritisch $STATUS #in dunkel rot
fi

oder so ähnlich)

hoffe ihr habt ein paar ideen für mich

danke

gruß naked_chef

edit: es bringt nichts wenn ich die zu vergleichende variable in ""- Packe ... denn bekomme ich foglende meldung : integer expression expected
 
Code:
STATUS=$(acpi | cut -f 2 -d "," | tr -d " %")
Versuch mal damit... Ansonsten poste mal die Ausgabe von acpi, damit man es selbe probieren kann...
 
danke, es hat funktioniert, die if- Verzweigung funktioniert aber dafür scheinen die farbcodes nicht ganz zu wollen.

beispiel:

Die folgende zeile stammt aus meiner .bashrc und sorgt für die formatierung meiner shell, der name ist rot hervorgehoben und der akkustatus in grün:

Code:
PS1='$(date +%H:%M:%S) \[\e[0;31m\]\u\e[0m@\h [\[\e[0;32m\]`acpi |cut -f 2 -d ","|sed -e "s/ //g"`\e[0m]>[\w] \$ '

hier scheinen die farbcodes also zu funktionieren ... (siehe anhang)

nur leider nicht in dem script. habt ihr dort noch ein paar anregungen?

danke

naked_chef
 
Code:
Text in ROT

das kommt bei mir raus ...

hier auch noch einmal der aktuelle status

Code:
#! /bin/bash
#
#

STATUS=$(acpi | cut -f 2 -d "," | tr -d " %")

if [ $STATUS -lt 50 ] ;
then echo -e "$STATUS" #in gruen wechsel auf gelb

elif [ $STATUS -lt 15 ] ;
then echo -e "$STATUS" #in gelb wechsel auf rot

elif [ $STATUS -lt 5 ] ;
then echo -e "Status kritisch $STATUS"

else
echo Batterie ist noch zu $STATUS geladen # soll standardmaessig in gruen sein
fi
 
mhh bei mir kommt:

[: 37: 40: unexpected operator
[: 37: 15: unexpected operator
[: 37: 5: unexpected operator
-e \e[0;32m%\e[0m

--edit

ich weis auch woran das liegt
man sollte auch den Akku drin haben :)
 
Folgendes wird wohl besser sein:
Code:
#wenn leer, AC annehmen:
if [ -z "$STATUS" ]
then echo -e "\e[0;32mAC\e[0m"

# wenn der status kleiner gleich 5%,
# wird die ausgabe rot und dick dargestellt
elif [ $STATUS -le 5 ]
then echo -e "\e[1;31m$STATUS%\e[0m"

# wenn der status kleiner gleich 15%,
# wird die ausgabe rot dargestellt
elif [ $STATUS -le 15 ]
then echo -e "\e[0;31m$STATUS%\e[0m"

# wenn der status kleiner gleich 40%,
# wird die ausgabe gelb dargestellt
if [ $STATUS -le 40 ]
then echo -e "\e[0;33m$STATUS%\e[0m"

# ansonsten wird der status gruen dargestellt
else
echo -e "\e[0;32m$STATUS%\e[0m"
fi

Bei dir wird ja geschaut, kleiner als 50 -> gelb sonst grün... wohl nicht im Sinne des Erfinders ;)

Achja... in PS1 kannst du besser \t nutzen, statt dem date aufruf...
 
Zurück
Oben