• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Ganz simple Frage zu "Befehlsausgabe -> Variable!"

Tach zusammen,

Ziel: Größe eines Directories rausfinden und Warning wenn MAXSPACE überschritten wird.

Dazu hab ich ne ganz simple Frage zu folgendem Script:

MAXSPACE=15000
USEDSPACE=$(du -s)

echo "Current system usage is $USEDSPACE Blocks";
echo "Current maximum system usage is $MAXSPACE Blocks";

DELTA=$(($USEDSPACE-$MAXSPACE));
echo "Available space is $DELTABlocks";

Das Problem ist, dass <du -s> ein Format ausgibt wie folgt:

1235 .
(ausgeschrieben 1235 PUNKT)

--> Das Problem ist der Punkt dahinter der für das aktuelle Directory steht.
Damit ist USEDSPACE keine Zahl sondern wohl ein String und läßt sich nicht einfach von MAXSPACE abziehen.

Für Euch Spezialisten eine der leichtesten Übungen.
Danke schon mal im Voraus
MobileUser
 

abgdf

Guru
Du kannst
Code:
du -s | awk -F "." '{print $1}'
nehmen. Bash-Variablen können, wenn möglich, je nachdem als Zahl oder String interpretiert werden (= Skalar).

Gruß
 
OP
M

Mobile_user

Newbie
Danke für die schnelle Antwort.
Aber trotzdem:
wie sieht es dann aus damit
USEDSPACE = .....
rauskommt?
mit print $1 geht das doch nicht, oder???

Danke
 
A

Anonymous

Gast
Was genau hast du denn nicht verstanden?
Code:
MAXSPACE=15000
USEDSPACE=$(du -s | awk '{print $1}')

echo "Current system usage is $USEDSPACE Blocks"
echo "Current maximum system usage is $MAXSPACE Blocks"
DELTA=$(($MAXSPACE - $USEDSPACE))
echo "Available space is $DELTA Blocks"
Hab mal ein paar kleine Fehler mit beseitigt, schön ist es nicht, aber wenn es dir so reicht.

robi
 
OP
M

Mobile_user

Newbie
hallo zusammen,

vielen Dank für die schnelle Hilfe.
das mit used - max hab ich auch schon bemerkt ;-)

Aber damit bin ich voll zufrieden und es ist halt einfach und damit schön lesbar

Danke nochmals
Mobile User
 
Oben