Was bedeutet das gnuwin32 Programm: [.exe tun?
Frage
Suchen Sie in der gnuwin32 / ist, gibt es eine seltsam aussehende Programmdatei mit dem Namen [.exe
Ich kann es nicht in der Dokumentation, gnuwin32.sourceforge.net oder in einer Google-Suche, so dass ich es lief und bekam:
$ [
[: missing `]'
$
also gab ich es] als Parameter und bekam
$ [ ]
$
Es ist nicht beschweren, so dass ich davon ausgegangen, es auf dem richtigen Weg war. Ich habe versucht:
$ [ hello ]
erneut, keine Beschwerden. so habe ich versucht, einen arithmetischen Ausdruck:
$ [ 1 + 1 ]
[: +: binary operator expected
$
Ich habe versucht, eine Reihe von verschiedenen Kombinationen, einschließlich Präfix und Postfix-Notation, aber nichts schien zu funktionieren. Was bedeutet das, was tun?
Lösung
Es wird verwendet, um zu bewerten bedingte Ausdrücke.
Es ist äquivalent zu (möglicherweise ein Symlink?) Der test
ausführbar.
Die manpage ist hier .
Sie können dies in vielen Bash-Skripte finden Sie unter:
if [ "$LOGNAME" = "scott" ]
then
echo "Logged in as Scott"
else
echo "incorrect user"
fi
Das Komische ist, die [
ist nicht Teil der bash Sprache, es ist eigentlich eine ausführbare Datei, deren Return-Code wird durch den ‚IF‘ verwendet. Dies ist der Grund, warum der Raum nach dem [
und das erste Argument ist zwingend erforderlich -. Wenn es weggelassen werden würde, würde das Skript ["$LOGNAME"
auszuführen versuchen und scheitern
Sie können nicht arithmetische Operationen mit ihm tun - verwenden expr
für die (siehe hier ).
Sie können jedoch für eine breite Palette von Dateieigenschaften testen (existiert es? Welche Art ist es? Etc) sowie die Nutzung Vergleichsoperatoren auf Strings und Zahlen.
Andere Tipps
test a
==
[ a ]
Es ist nur Zucker
Edit: Um zu klären, das ist die bedingte Syntax, z.B. [ "A" = "a"]
Eine andere Antwort bereits erwähnt es das gleiche wie test
ist. Auf bash, es ist auch eine eingebaute, so dass Sie die Hilfe für sie mit dem help
builtin (help test
) erhalten können.