Strona 1 z 1

[+] Bash - sprawdzanie zajętości dysku

: 27 kwietnia 2009, 17:12
autor: ksysinek
Witam. Napisałem skrypt do oczyszczania dysku. Chcę go wywoływać tylko wtedy, gdy użycie dysku jest większe niż 90%. W związku z tym napisałem pomocniczy skrypt:

Kod: Zaznacz cały

df -h | tail -n 3 | head -n 1 | cut -c41-42 > tmp
DF=`cat tmp`
if [ $DF >= "90" ]
then
echo "Zużycie dysku większe niż 90%"
(reszta regułek do oczyszczenia dysku)
else
echo "Użycie dysku w normie"
fi
Obecnie, gdy moje użycie dysku wynosi 87% dostaję coś takiego:

Kod: Zaznacz cały

./df.h
./df.h: line 3: [: 87: unary operator expected
Użycie dysku w normie
Czy ktoś mógłby mi powiedzieć, dlaczego tak się dzieje? Pozdrawiam.

: 27 kwietnia 2009, 17:27
autor: jedi1
Z tego co wiem to powinno być

Kod: Zaznacz cały

 if [ $DF -ge "90" ]

: 27 kwietnia 2009, 17:28
autor: sigo
Bo prawdę mówi. Bash różni się trochę od większości języków programowania.

Poprawiłem minimalnie Twoją wersję, wywaliłem używanie pliku tymczasowego (po co go tworzyć?). Można też użyć awka albo jakiegoś parametru df zamiast cuta

Kod: Zaznacz cały

#!/bin/bash

df=`df -h | tail -n 3 | head -n 1 | cut -c41-42`

if [ $df -ge 90 ]
then
echo "Zużycie dysku większe niż 90%"
else
echo "Uzycie dysku w normie"
fi 
[quote="Kurs basha]-lt mniejsze niż
-gt większe niż
-ge większe lub równe
-le mniejsze lub równe[/quote]

: 27 kwietnia 2009, 17:33
autor: winnetou
Dziękuje...

: 27 kwietnia 2009, 19:50
autor: ksysinek
Skrypt w wykonaniu sigo sprawuje się tak jakbym sobie tego życzył. Dziękuję, bardzo mi pomogłeś.