Forumet - Bash hjälp

Bash hjälp

631 0 15
Jo jag skulle vilja ha hjälp på ett troligen väldigt enkelt problem.

Jag vill göra ett bashscript som läser en fil och beroende på filens innehåll skriver ut en text till standard out.

Filen har tre olika lägen, 768,769,770.
Dessa lägen skall representera Performance, Normal, Powersave.

Jag tänkte att det med enkla variabler skulle kunna lösas men eftersom jag varken kan programmera eller är speciellt hemma på bash så blir det inte riktigt rätt.


#!/bin/bash
S768=Performance
S769=Normal
S770=Powersave
echo $S`cat /sys/devices/platform/eeepc/she`


Detta ger mig bara innehållet i filen "she", medans jag tycker att den borde ge output $S"filens innehåll" som skulle ha resulterat i rätt variabel.
Det finns säkerligen mycket enklare lösningar, tänkte höra om nån vet vad jag gör fel eller hur jag borde göra.
Med lite trial and error så fick jag till en rätt vettig lösning:

#!/bin/bash

if [ "$(cat /sys/devices/platform/eeepc/she)" == '770' ];
then
echo "Powersave";
else
if
[ "$(cat /sys/devices/platform/eeepc/she)" == '769' ];
then
echo "Normal";
else
if
[ "$(cat /sys/devices/platform/eeepc/she)" == '768' ];
then
echo "Performance";
fi
fi
fi

Kom gärna med förslag om det går att göra på andra sätt.
$VAR = $(cat /sys/devices/platform/eeepc/she)
case '$VAR' in
770)
echo "Powersave";
;;
769)
echo "Normal";
;;
768)
echo "Performance";
;;
*)
echo "Something is wrong. /sys/devices/platform/eeepc/she = " + $VAR
;;
esac


Sitter inte i Linux, så jag kan inte kolla om jag har rätt, men det känns som att det här torde vara enklare och aningen snyggare.

Spana också in:

Äsch, alla vet alla Haskell är det lämpligaste språket för dylikt scriptande.

main = readFile "/sys/devices/platform/eeepc/she" >>= putStr . mode
where
mode "768" = "Performance"
mode "769" = "Normal"
mode "770" = "Powersave"


aristoteles:

funk


Nejmen allvarligt, det ger bättre prestanda åtminstone, förutsatt att du ska köra programmet varje sekund eller så.
aristoteles:

Hur ofta skripten körs påverkar inte mitt utrymme, resten av hårdvaran är finfin![no-no] Sitter på en eee med ssd.


Nice, vill ha en sån jag med. Hursomhelst ordar jag för mitt program. Det är faktiskt bara en tredjedel så långt som åttas skalskript, och lär köras flera millisekunder snabbare! (Du slipper faktiskt ladda skaltolken.)
alter ego:

Det är faktiskt bara en tredjedel så långt som åttas skalskript, och lär köras flera millisekunder snabbare! (Du slipper faktiskt ladda skaltolken.)


Säkert helt sant, men med tanke på att diskutrymme är min enda undermåliga resurs så ser jag ingen anledning till att besvära sig att hämta hem en kompilator för att kompilera några rader för en funktion jag redan har.[no-no]