![Bash if-Anweisung [: fehlender `]'-Fehler](https://rvso.com/image/57213/Bash%20if-Anweisung%20%5B%3A%20fehlender%20%60%5D'-Fehler%20.png)
Ich habe Probleme mit Bash. Ich versuche, einen Befehl in eine Anweisung einzufügen if
und ihn dann mit einer Zeichenfolge zu vergleichen.
Das funktioniert perfekt.
echo $(ipcs | grep Shared | awk '{print $2}')
Wenn ich es in eine Aussage einfüge, if
bekomme ich einige Probleme.
$ if [ "$(ipcs | grep Shared | awk '{print $2}')" -eq "Shared"]; then
echo expression evaluated as true;
else
echo expression evaluated as false;
fi
bash: [: missing `]'
expression evaluated as false
$ if [ "$(ipcs | grep Shared | awk '{print $2}')" = "Shared"]; then
echo expression evaluated as true;
else
echo expression evaluated as false;
fi
bash: [: missing `]'
expression evaluated as false
$ if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared"]; then
echo expression evaluated as true;
else
echo expression evaluated as false;
fi
bash: [: missing `]'
expression evaluated as false
Ich habe ==
, =
, und ausprobiert -eq
, weil ich nicht sicher war, welches ich verwenden sollte.
Antwort1
Ihr missing ]'
Fehler liegt daran, dass Sie zwischen "Shared"
und ein Leerzeichen benötigen ]
, die Zeile sollte also lauten if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then
.