For Schleife in Shelldatei
Hallo,
Hallo zusammen,
ich hatte eine Shelldatei geschrieben, welche mir die Laufwerke und den entsprechenden freien Speicher ausliest.
Nun soll ich diese Shelldatei in ihrem Umfang verkleinern (über for-schleife).
Mein kläglicher Versuch dazu:
==> Die Sachen werden zwar ausgelesen, jedoch:
1. in einer Endlosschleife
2. es sollten nur drei Laufwerke angezeigt werden (siehe Befehlszeile "AnzahlLaufwerke > Filterung), es werden aber alle 4 angezeigt (inklusive dem cifs).
Die alte Shelldatei hatte ich so geschrieben, dass die Zeilen für Laufwerk und FreierSpeicher insgesamt 3 mal vorkamen, also die Prozedur 3 mal abgefragt wurde, unzwar für jede ausgelesene Zeile in der sich ein Laufwerk befand (siehe Befehl: sed -n 'p', für das 'p' stand jeweils einmal '1p', '2p', '3p').
Das For-Tutorial hier im Forum habe ich auch gelesen, bevor jemand fragt.
Danke
Gruß
Backspace
Hallo zusammen,
ich hatte eine Shelldatei geschrieben, welche mir die Laufwerke und den entsprechenden freien Speicher ausliest.
Nun soll ich diese Shelldatei in ihrem Umfang verkleinern (über for-schleife).
Mein kläglicher Versuch dazu:
#!/bin/sh
AnzahlLaufwerke=`df -hT | grep "%" | grep -v cifs | grep -v Typ | wc -l`
#obere Zeile: Filterung nach bestimmten Laufwerken
$AnzahlLaufwerke=AnzahlLaufwerke;
for ((i=1; i=$AnzahlLaufwerke; i++));
do echo
{
"Laufwerk=`df -hT | grep -v Dateisystem | grep -v server_share | grep -v mapper | awk '{print $NF}' | sed -n 'p'`";
"FreierSpeicher=`df -hT | grep -v Dateisystem | grep -v server_share | grep -v mapper | awk '{print $(NF-1)}' | sed -n 'p'`";
};
done
==> Die Sachen werden zwar ausgelesen, jedoch:
1. in einer Endlosschleife
2. es sollten nur drei Laufwerke angezeigt werden (siehe Befehlszeile "AnzahlLaufwerke > Filterung), es werden aber alle 4 angezeigt (inklusive dem cifs).
Die alte Shelldatei hatte ich so geschrieben, dass die Zeilen für Laufwerk und FreierSpeicher insgesamt 3 mal vorkamen, also die Prozedur 3 mal abgefragt wurde, unzwar für jede ausgelesene Zeile in der sich ein Laufwerk befand (siehe Befehl: sed -n 'p', für das 'p' stand jeweils einmal '1p', '2p', '3p').
Das For-Tutorial hier im Forum habe ich auch gelesen, bevor jemand fragt.
Danke
Gruß
Backspace
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156202
Url: https://administrator.de/forum/for-schleife-in-shelldatei-156202.html
Ausgedruckt am: 10.05.2025 um 03:05 Uhr
5 Kommentare
Neuester Kommentar
Ohne jetzt groß drüber nachgedacht zu haben, stimmt hier mit Deiner Abbruchbedingung was nicht.
Proboer das man so:
AnzahlLaufwerke=3
for ((i=1; i<=$AnzahlLaufwerke; i++));do echo $i; done
bye cry
#!/bin/bash
# einkommentieren, wenn Du sehen möchtest, was passiert
#set -x
# MAC fuer eth0 auslesen
mac=${ifconfig eth0 | awk '/Hardware Adresse/{print $6}'}
df -hTP | egrep -v "cifs||Type|tmpfs" | while read line
do
drive=${echo $line | awk '{print $7}'}
# der Prozentwert bei df zeigt den verbrauchten Plattenplatz an nicht den freien
# free in Prozent, aber ohne %-Zeichen, das ist in einer URL so nicht erlaubt
free=$((100 - ${echo $line | awk '{gsub(/%/,"",$6);print $6}'}))
# die aktuelle Zeit wuerde ich auf dem Server 17x.xx.x.xxx in dem php-script auslesen
wget -O - "http://17x.xx.x.xxx/Ordner/Programm.php?MACADDRESS=${mac}&DRIVE=${drive}&FREESPACE=${free}&save_data=true
done
Ist das in etwa das, was Du machen wolltest?
bye cry