In bash, Umleitungen können überall in der Zeile auftreten (aber Sie sollten es nicht tun! --- siehe the bash-hackers tutorial). Bash nimmt die >5
als eine Umleitung, erstellt die Ausgabedatei 5
und verarbeitet dann den Rest der Argumente. Daher passiert echo 2*3 is a valid inequality
, was Ihnen die Ausgabe gibt, die Sie in der Ausgabedatei 5
sehen.
Was möchten Sie wahrscheinlich ist
echo "2*3>5 is a valid inequality"
oder
echo '2*3>5 is a valid inequality'
(mit einfachen Anführungszeichen), von denen wird Ihnen die Nachricht, die Sie als Ausdruck auf der Befehlszeile angeben. Der Unterschied besteht darin, dass innerhalb von ""
Variablen (wie $foo
) ausgefüllt werden, jedoch nicht innerhalb von ''
.
bearbeiten: Die bash man
page sagt, dass die
Umleitungsoperatoren überall in einem einfachen Befehl vor oder erscheinen kann oder einen Befehl folgen. Umleitungen werden in der Reihenfolge, in der sie angezeigt werden, von links nach rechts verarbeitet.
Verwenden Zitate: '$ echo "2 * 3> 5 ist eine gültige Ungleichung"' Ansonsten ist Ihr [Umleiten] (http://www.tldp.org/LDP/abs/html/io-redirection.html) der Ausgang – dawg
nicht so offensichtlich. Ich benutze seit 15 Jahren Linux, ich hatte keine Ahnung, dass Sie die Weiterleitung bis jetzt irgendwo hinstellen konnten. – njzk2
@ njzk2, POSIX erfordert nicht, dass es irgendwo anders als der Anfang oder das Ende unterstützt wird, aber * verbietet * solches Verhalten nicht; es ist also eine Bash-Erweiterung, aber eine vollkommen legale. –