if Bedinungen logisch verknüpfen

Bash, Shell, PHP, Python, Perl, CGI
Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: if Bedinungen logisch verknüpfen

Post by Roger Wilco » 2010-01-05 15:14

Das sollte eigentlich funktionieren, wenn $IPSTATUS und $STATUS keine Leerzeichen enthalten.

Folgendes funktioniert bei mir:

Code: Select all

$ cat test.sh
#!/bin/sh

VAR1="active"
VAR2="unknown"

VAR3="inactive"
VAR4="known"

if [ "${VAR1}" = "active" -a "${VAR2}" = "unknown" ]
then
        echo "Yay 1!"
fi

if [ "${VAR3}" = "active" -a "${VAR4}" = "unknown" ]
then
        echo "Yay 2!"
fi

echo
$SHELL --version|head -n1


Code: Select all

$ sh test.sh
Yay 1!

GNU bash, Version 4.0.35(2)-release (x86_64-unknown-linux-gnu)

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: if Bedinungen logisch verknüpfen

Post by Roger Wilco » 2010-01-05 18:08

Die Leerzeichen zwischen den Variablen (bzw. Literalen) und dem Gleichheitszeichen sind obligatorisch. ;)

Code: Select all

$ cat test.sh
#!/bin/sh

IPSTATUS="activ"
STATUS="unknown"

if [ "${IPSTATUS}" = "passiv" -a "${STATUS}" = "unknown" ]
then
  echo test;
fi

if [ "${IPSTATUS}" = "activ" -a "${STATUS}" = "unknown" ]
then
  echo test2;
fi

Code: Select all

$ sh test.sh
test2