Hallo Gemeinde,
Ich schreibe gerade an einem kleinen Script welches Zustände auslesen soll, dabei sieht mein Script folgendermaßen aus:
Die Abfrage habe ich nun mehrfach untereinander stehen, der Aufbau ist natürlich identisch und angepasst an die jeweilige Zeilennummer deren Adapter abgefragt werden soll.
Der Inhalt von adapterlist.txt sieht so aus wie weiter unten zu sehen.
Die Ziffern vor den Adaptern (0
und die Bezeichnung (Art7
sowie der Name (Weinbrand Mariakron) kann variieren, so könnte der Weinbrand Mariakron auch die Nummer 4: haben. In den Flaschen-Zeilen ändert sich nur der Zustand, der entweder voll oder leer ist:
Die Datei adapterlist.txt ist nur eine Datei mit der ich teste, aber enthält den Aufbau wie er von einem Programm ausgegeben wird, die Zeilen in denen die Flaschen stehen sind mit einem Tabulator versehen.
Die maximale Anzahl von bis zu acht Adaptern wird hier verwendet, es könnten aber auch weniger oder gar keine vorhanden sein.
Genau da liegt das Problem, die Abfrage arbeitet richtig wenn alle 8 Adapter vorhanden sind und wertet die alle Zustände aus, jedoch kommt bei fehlen aller Adapter das heraus:
Wenn mehrere Adapter vorhanden sind, aber ein gerade abgefragter nicht, dann wird das ausgegeben:
Verschachteltes if then else fi geht ja nicht oder?
Wie kann ich die Abfrage bzw. die fehlerhafte Ausgabe verhindern wenn einer, mehrere oder alle Adapter fehlen?
lieben Gruß aus Zuhaus
Ich schreibe gerade an einem kleinen Script welches Zustände auslesen soll, dabei sieht mein Script folgendermaßen aus:
Code:
#/bin/bash
# Status von Adapter 2 (Wiskey Chivas Regal) feststellen:
# Zuerst den Namen auslesen und in die Variable 'ADP2' schreiben:
ADP2="`adapterlist.txt | head -4 | tail -1 | cut -d" " -f3-`"
# Den Zustand der 0,75l Flasche auslesen, die Tabulatorenen entfernen und in die Datei 'adapter2' schreiben:
cat adapterlist.txt | head -5 | tail -1 | sed s'/\t//g' > /tmp/adapter2 ; \
# Zustand der 3,00l Flasche abfragen, die Tabulatorenen entfernen und an die Datei anhaengen:
cat adapterlist.txt | head -6 | tail -1 | sed s'/\t//g' >> /tmp/adapter2 \
# Die If-Anweisung ueberprueft ob der Wert 'voll' ist, dann
if [ `cat /tmp/adapter2 | head -1 | cut -d" " -f3` = "voll" ];
# gibt es die Meldung:
echo "$ADP2 ist VOLL"
# Wenn der Wert nicht 'voll' ist, also irgendwas anderes dann
else
# wird das ausgegeben:
echo "$ADP2 ist leer"
fi
Der Inhalt von adapterlist.txt sieht so aus wie weiter unten zu sehen.
Die Ziffern vor den Adaptern (0
Code:
0: Art7: Weinbrand Mariakron
0,75l Flasche: voll
3,00l Flasche: voll
2: Art6: Wiskey Chivas Regal
0,75l Flasche: voll
3,00l Flasche: voll
4: Art4: Wiskey Jim Beam
0,75l Flasche: leer
3,00l Flasche: voll
5: Art5: Rotwein Amselfelder
0,75l Flasche: leer
3,00l Flasche: voll
6: Art3: Weiswein Pinot Gris
0,75l Flasche: leer
3,00l Flasche: voll
7: Art1: Erdbeerschaumwein
0,75l Flasche: leer
2,00l Flasche: voll
8: Art0: Underberg
0,75l Flasche: leer
3,00l Flasche: voll
3: Art2: Cola
1,00l Flasche: voll
2,00l Flasche: voll
Die Datei adapterlist.txt ist nur eine Datei mit der ich teste, aber enthält den Aufbau wie er von einem Programm ausgegeben wird, die Zeilen in denen die Flaschen stehen sind mit einem Tabulator versehen.
Die maximale Anzahl von bis zu acht Adaptern wird hier verwendet, es könnten aber auch weniger oder gar keine vorhanden sein.
Genau da liegt das Problem, die Abfrage arbeitet richtig wenn alle 8 Adapter vorhanden sind und wertet die alle Zustände aus, jedoch kommt bei fehlen aller Adapter das heraus:
Code:
Zeile 13: [: =: Einstelliger (unärer) Operator erwartet.
ist leer
Code:
voll ist VOLL
Verschachteltes if then else fi geht ja nicht oder?
Code:
#/bin/bash
if [ -e adapterlist.txt ] then
ADP2="`adapterlist.txt | head -4 | tail -1 | cut -d" " -f3-`"
cat adapterlist.txt | head -5 | tail -1 | sed s'/\t//g' > /tmp/adapter2 ; \
cat adapterlist.txt | head -6 | tail -1 | sed s'/\t//g' >> /tmp/adapter2 \
if [ `cat /tmp/adapter2 | head -1 | cut -d" " -f3` = "voll" ];
echo "$ADP2 ist VOLL"
else
echo "$ADP2 ist leer"
fi
else
echo "Es sind keine Adapter vorhanden"
fi
Wie kann ich die Abfrage bzw. die fehlerhafte Ausgabe verhindern wenn einer, mehrere oder alle Adapter fehlen?
lieben Gruß aus Zuhaus