Ich möchte mehrere Bedingungen wie folgt darstellen:
if [ ( $g -eq 1 -a "$c" = "123" ) -o ( $g -eq 2 -a "$c" = "456" ) ]
then
echo abc;
else
echo efg;
fi
aber wenn ich das Skript ausführe, zeigt es
Syntaxfehler in Zeile 15: `[' unerwartet,
wobei Zeile 15 diejenige ist, die das "if ...." anzeigt.
Was ist falsch an dieser Bedingung? Ich denke, dass etwas mit den ()
nicht stimmt.
9 Stimmen
Sie fragen nicht nach Shell-Bedingungen, sondern nach Test-Bedingungen. Der gesamte Ausdruck in Ihrem Beispiel wird von
test
([
) und nicht von der Shell ausgewertet. Die Shell bewertet nur den Exit-Status von[
.0 Stimmen
Siehe auch stackoverflow.com/questions/16203088/…
0 Stimmen
Verwandt: Zusammengesetzte if-Anweisungen mit mehreren Ausdrücken in Bash