PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [BASH] Variable wegbekommen


nalye
2012-02-13, 11:10:06
Ich habe folgendes (funktionierendes) Script:


#!/bin/sh

STATE_OK=0
STATE_CRITICAL=2
n=0
sum=0
temp="$(mktemp)"
ergebnis="$(mktemp)"
border="23.5"

for i in {1..5}
do
read_temp=$(php /var/www/html/netio/index.php|grep -o '[0-9]\{2\}\.'|sed -e "s/\.//g")
sum=`expr $sum + $read_temp`
n=`expr $n + 1`
sleep 0.2
done

mean=$(echo "scale=2;$sum/$n" | bc)

echo $mean'<'$border|bc -l > $ergebnis # Entweder '0' (false) oder '1' (true)

help2=`cat $ergebnis`

if [ $help2 -eq 0 ]
then
echo "Groesser als $border ($mean)"
exitstatus=$STATE_CRITICAL
else
echo "Temperatur OK ($mean)"
exitstatus=$STATE_OK
fi

rm -f $temp
rm -f $ergebnis

exit $exitstatus
Nun will ich den Umweg mit der help2-Variable loswerden. Folgender Workaround wirft mir einen Fehler:


#!/bin/sh

STATE_OK=0
STATE_CRITICAL=2
n=0
sum=0
temp="$(mktemp)"
ergebnis="$(mktemp)"
border="23.5"

for i in {1..5}
do
read_temp=$(php /var/www/html/netio/index.php|grep -o '[0-9]\{2\}\.'|sed -e "s/\.//g")
sum=`expr $sum + $read_temp`
n=`expr $n + 1`
sleep 0.2
done

mean=$(echo "scale=2;$sum/$n" | bc)

ergebnis=$($mean'<'$border|bc -l) # Entweder '0' (false) oder '1' (true)

if [ $ergebnis -eq 0 ]
then
echo "Groesser als $border ($mean)"
exitstatus=$STATE_CRITICAL
else
echo "Temperatur OK ($mean)"
exitstatus=$STATE_OK
fi

rm -f $temp
rm -f $ergebnis

exit $exitstatus
==>


+ mean=22.60
++ '22.60<23.5'
++ bc -l
mittelwert.sh: line 21: 22.60<23.5: command not found
+ ergebnis=
+ '[' -eq 0 ']'
mittelwert.sh: line 23: [: -eq: unary operator expected
+ echo 'Temperatur OK (22.60)'
Temperatur OK (22.60)
+ exitstatus=0
Wo liegt mein blöder Denkfehler?

nalye
2012-02-13, 14:05:41
Allet jut, ich habs...


#!/bin/sh

STATE_OK=0
STATE_CRITICAL=2
n=0
sum=0
temp="$(mktemp)"
border="23.5"

for i in {1..5}
do
read_temp=$(php /var/www/html/netio/index.php|grep -o '[0-9]\{2\}\.'|sed -e "s/\.//g")
sum=`expr $sum + $read_temp`
n=`expr $n + 1`
sleep 0.2
done

mean=$(echo "scale=2;$sum/$n" | bc)

ergebnis=$(echo $mean'<'$border|bc ) # Entweder '0' (false) oder '1' (true)

if [ $ergebnis -eq 0 ]
then
echo "Groesser als $border ($mean)"
exitstatus=$STATE_CRITICAL
else
echo "Temperatur OK ($mean)"
exitstatus=$STATE_OK
fi

rm -f $temp

exit $exitstatus