@Laxhund: Bitte Code zeigen der zu der Fehlermeldung passt, oder verraten mit welcher Shell Du das versucht hast auszuführen. Bei der Bash bekomme ich:
./test.sh: line 5: [: missing `]'
./test.sh: line 5: counter: command not found
Und die Dash sagt:
./test.sh: 5: ./test.sh: counter: not found
./test.sh: 5: [: missing ]
Grundsätzlich ist [
ein alias für das Test-Programm, also das gleiche wie test&counter -eq 3]
. Da sieht man schon, dass das problematisch aussieht so ohne Leerzeichen nach dem Programmnamen (auch wenn das hier wegen einem anderen Fehlers noch nicht das Problem ist). Das &
ist da falsch, da hast Du im tatsächlichen Code sicher das korrekte $
stehen.
Wenn man den Fehler korrigiert, steht da [$counter -eq 3]
. Das erste Wort nach dem aufteilen ist [$counter
und wenn die Variable den Wert 1 hat, dann wird das zu [1
und insgesamt [1 -eq 3]
. Das versucht die Shell nun auszuführen: das Programm [1
mit den beiden Argumenten -eq
und 3]
. Und die Fehlermeldung sagt, dass es das Programm [1
nicht gibt. Das $counter
bzw. der Wert davon muss das erste Argumen vom [
-Programm sein, das heisst da muss ein Leerzeichen dazwischen: [ $counter -eq 3]
. Testlauf:
./test.sh: 5: [: missing ]
Im Grunde das gleiche Problem. Das [
-Programm erwartet als letztes Argumen ein ]
. Es wird aber mit 3]
als letztes Argument aufgerufen. Da muss auch wieder ein Leerzeichen hin, damit die 3
und das ]
separate Argumente sind. Ergebnis:
| if [ $counter -eq 3 ]; then
echo "Text"
exit
fi
|