
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 else
nie 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.