if macht nicht was es soll

tennessee

tennessee

Linuxfan
hallo zusammen,

ich möchte einen Textstring vergleichen was aber nicht funktioniert.
Das Script läuft zwar mach aber immer nur den then Teil und nie das else
Egal welchen Wert ich in MEIER eingebe.
Zwei Varianten habe ich getestet beide funzen nicht. Muß wohl am Syntax liegen.


#!/bin/bash
export MEIER="green"
if (($MEIER==red))
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi

#!/bin/bash
export MEIER="green"
if (("$MEIER"=="red"))
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi
 
das ist ein gleichheitszeichen zuviel in der if-abfrage.

das ist in der bash äußerst gewöhnungsbedürftig, da man das von fast jeder anderen sprache anders kennt.

also:

statt

Code:
if($bla==blub)

Code:
if($bla=blub)
 
heissen dank, da hätte ich bestimmt nie angesetzt ohne voheriges umständliches googlen :D
 
Wie wärs denn mal wenn du mal fix die Fehlermeldung postest? Vllt isses ja nur ein kleiner Syntaxfehler.
 
Die doppelten runden Klammern sind in bash fuer arithmetische Ausdruecke da.
versuch mal
Code:
if [ "$MEIER = green" ] ; then echo green; fi
 
Hallo,

entweder Du gehst über test oder Du machst das direkt mit der Bash...

Entweder so (mit test):
Code:
#!/bin/bash
export MEIER="green"
if test $MEIER == red
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi

#!/bin/bash
export MEIER="green"
if test "$MEIER" == "red"
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi

oder direkt in der bash:
Code:
#!/bin/bash
export MEIER="green"
if [[ $MEIER == red ]]
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi

#!/bin/bash
export MEIER="green"
if [[ "$MEIER" == "red" ]]
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi
 
Zuletzt bearbeitet:
Hallo

Code:
$ export MEIER="green"; if [ "$MEIER" = "blue" ] ; then echo gefunden MEIER ist $MEIER ; else echo "nicht gefunden Meier is $MEIER"; fi
[i]nicht gefunden Meier is green[/i]

$ export MEIER="green"; if [ "$MEIER" == "blue" ] ; then echo gefunden MEIER ist $MEIER ; else echo "nicht gefunden Meier is $MEIER"; fi
[i]nicht gefunden Meier is green[/i]

$ bash --version
GNU bash, version 3.00.16(1)-release (i386-pc-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.


HTH
Gruß Wolfgang
 
hallo Leute danke für die Antworten so funktionierts!


#!/bin/bash
wert="red"
if test $wert = "red"
then
echo "CRITICAL"
else
echo "no CRITICAL"
fi
:))
 
Hallo
Nochmal zur Klarstellung:

if [ "$VAR"="WERT" ] geht nicht.
if [ "$VAR" = "WERT" ] geht.
if [ "$VAR=WERT" ] ist auch nicht das was du erwartest. ;)
if [ "$VAR" == "WERT" ] geht aber auch.
Ansonsten sein angemerkt, dass [ für test steht!

HTH
Gruß Wolfgang
 

Ähnliche Themen

If-Abfrage kommt nicht positiv zurück, obwohl Kriterium erfüllt

HandbrakeCLI Shell Skript

mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

If Schleife

Zurück
Oben