Marco Moock <
mo...@posteo.de>:
Jein: Wenn ein zum POSIX‐Standard kompatibler Shell die Zeichen
«<», «|» oder «>» nackt in der Kommandozeile vorfindet, liest er
sie als Angaben, wohin oder woher Datenströme gehen bzw. kommen
sollen. Er handelt entsprechend und entfernt diese die
Datenströme lenkenden Angaben aus der Kommandozeile, ehe sie
weiter verarbeitet wird. Die Folge ist, dass schließlich das zu
startende simple command diese Angaben in seiner Parameterliste
nicht mehr erhält.
Wenn man das nicht will, muss man diese Zeichen einkleiden, indem
man sie mit Backslashes als Escape‐Zeichen oder Apostrophe oder
Anführungszeichen als Quote‐Zeichen schützt. Dann haben sie
keine Datenströme lenkende Funktion und bleiben in der
Kommandozeile erhalten; was sie dann bedeuten, hängt vom zu
startenden simple command ab.
Das im POSIX‐Standard enthaltene Kommando «test» fängt mit ihnen
nichts spezielles an (Zitat aus
<
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#top>):
Some additional primaries newly invented or from the KornShell
appeared in an early proposal as part of the conditional command
([[]]): s1 > s2, s1 < s2, str = pattern, str != pattern, f1 -nt
f2, f1 -ot f2, and f1 -ef f2. They were not carried forward into
the test utility when the conditional command was removed from
the shell because they have not been included in the test utility
built into historical implementations of the sh utility.
Das «test»‐Kommando in dem von dir genutzten Shell weicht vom
POSIX‐Standard ab.