String-Vergleich in der bash funktioniert nicht
Hallo, ich bin neu in bash scripting. Nur hat diese einfaches Programm aber es wirft Fehler.
#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
echo "Linux"
else
echo "Windows"
fi
Mit == oder eq für beide Fälle, die ich bin immer folgende Fehlermeldung, und es wird Druck auf die else-condn.
./ostype.sh: line 3: [GNU/Linux==GNU/Linux]: No such file or directory
Windows
Bash-version GNU bash, version 3.2.48(1)-release (x86_64-suse-linux-gnu)
- Diese Frage wurde bereits beantwortet, siehe link [1] [1]: stackoverflow.com/questions/394230/...
- Mit dem richtigen Abstand
=
und==
sollte funktionieren beide strings vergleichen.-eq
ist eine Ganzzahl vergleichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
beachten Sie die Leerzeichen, und die einzigen
=
.[
ist eigentlich ein Programm, und der rest sind Argumente![ is actually a program, and the rest are arguments!
.. Viele Menschen wissen es nicht. Auch wusste ich nicht, vor einigen Monaten. 🙂[[
, die ist wahrscheinlich schneller.[
ist auch außer Kraft gesetzt durch shell-built-in. wie[[
&echo
...type -a \[
Verwenden
=
für string-Vergleich. Siehe: http://tldp.org/LDP/abs/html/comparison-ops.htmlAuch, es sollte ein Raum um den eckigen Klammern und dem Vergleich-operator, d.h.