Einfaches if/else funktioniert nicht

Einfaches if/else funktioniert nicht

ich habe mir das eine Stunde lang angesehen, ohne herauszufinden, wo das Problem liegt. Die else-Anweisung funktioniert aus irgendeinem Grund nicht.

#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi

Antwort1

Das Problem liegt in der Zeile:

if [ $#=3 ]

Da Sie keine Leerzeichen um haben =, wird zwangsläufig Folgendes ausgeführt:

if [ -n $#=3 ]

Test, der immer wahr sein wird =3, da er immer vorhanden ist und daher elsenie ausgelöst wird.

Um Folgendes müssen Sie Leerzeichen verwenden =:

if [ $# = 3 ]

Verwenden Sie bei der Variablenerweiterung auch doppelte Anführungszeichen, um eine Worttrennung und Pfadnamenerweiterung zu vermeiden, was in diesem Fall $#jedoch nicht unbedingt erforderlich ist.

verwandte Informationen