ubuntuusers.de

integer expression expected

Status: Gelöst | Ubuntu-Version: Ubuntu 19.04 (Disco Dingo)
Antworten |

m.g.o.d

Anmeldungsdatum:
18. November 2019

Beiträge: 29

Hallo Zusammen,

ich habe eine Frage, wo ich gerade nicht weiterkomme. Im Anhang (Skript1) befindet sich ein Shellskript, was mir im debugging modus (set -x) bei der rot markierten Zeile:

1
2
3
4

if [ "$outputstatus" -ne "$outputstatusgood" ]
then 
    ...

zurückgibt: integer expression expected.

Im Anhang dazu befindet sich der Screenshot der debugging Ausgabe set -x.

Die Ausgabe der beiden Variablen sieht folgendermaßen aus:

outputstatus=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1
outputstatusgood=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1

Der Inhalt beider Variablen ist also exakt gleich. In meinem Beispiel wird die Schleife nur durchlaufen, wenn einer der Werte nicht gleich ist (-ne). Das funktioniert wegen der Fehlermeldung aber noch nicht.

Habe ich hingegen den Fall:

outputstatus=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 0
outputstatusgood=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1

soll die Schleife durchlaufen werden. Soweit, sogut.

Könnte mir jemand einen Tipp geben?

Viele Grüße & schonmal Danke für eure Mühe,

Marc

Bearbeitet von sebix:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

Bilder

frechdachs

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

m.g.o.d schrieb:

Hallo Zusammen,

ich habe eine Frage, wo ich gerade nicht weiterkomme. Im Anhang (Skript1) befindet sich ein Shellskript, was mir im debugging modus (set -x) bei der rot markierten Zeile:

if [ "$outputstatus" -ne "$outputstatusgood" ] then ...

zurückgibt: integer expression expected.

Im Anhang dazu befindet sich der Screenshot der debugging Ausgabe set -x.

Die Ausgabe der beiden Variablen sieht folgendermaßen aus:

outputstatus=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1 outputstatusgood=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1

Hast Du mal folgendes probiert:

1
2
3
4
if [ "$outputstatus" = "$outputstatusgood" ]
then
     [ ... ]
fi

Gemäss man test kann man "-ne" nur für den Vergleich von Ganzzahlen nehmen.

Der Inhalt beider Variablen ist also exakt gleich. In meinem Beispiel wird die Schleife nur durchlaufen, wenn einer der Werte nicht gleich ist (-ne). Das funktioniert wegen der Fehlermeldung aber noch nicht.

Habe ich hingegen den Fall: outputstatus=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 0 outputstatusgood=iso.3.6.1.4.1.44502.0.0.1.1.2.9 = INTEGER: 1

soll die Schleife durchlaufen werden. Soweit, sogut.

Könnte mir jemand einen Tipp geben?

Viele Grüße & schonmal Danke für eure Mühe,

Marc

Liebe Grüße,

fechdachs

frechdachs

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

Pardon. Wenn Du prüfen möchtest, ob die Werte ungleich sind (analog zu "ne" = not equal), dann muss es natürlich so lauten:

1
2
3
4
5
if [ "$outputstatus" != "$outputstatusgood" ]
then
     # Die Zeichenketten sind NICHT identisch
     [ ... ]
fi

Liebe Grüße,

frechdachs

m.g.o.d

(Themenstarter)

Anmeldungsdatum:
18. November 2019

Beiträge: 29

Danke schön. Das hat mir geholfen.

Besten Dank.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Bitte keine Screenshots von Texten posten und Skripte/Fehlermeldungen nicht als Anhang, sondern in einem Codeblock.

Antworten |