Schlaumaier schrieb:
> Gehen da keine "" wie bei Windows. ??
Doch, aber es bringt nichts. Hier haben wohl einige ein
Verständnisproblem:
Es gibt hier zwei Fallen:
1. Den Dateinamen als Argument korrekt an das Programm "rm" zu geben.
Das wird tückisch wenn der Dateiname Leerzeichen, Anführungsstriche und
andere Sonderzeichen enthält, weil er dann von der Shell (Unix) bzw. von
der C-Laufzeitumgebung selbst (Win32) ggf. falsch interpretiert wird.
z.B.
Übergibt zwei Argumente "a" und "b" an das "rm"-Programm, statt einem
Argument "a b". Gegen diese Falle helfen Anführungsstriche und/oder
Escaping, also z.B.
.
2. Das Programm "rm" muss den Dateinamen auch korrekt als solchen
verstehen und nicht versuchen, ihn als Option zu interpretieren. Fängt
der Dateiname mit "-" an, versucht "rm" ihn als Option zu verstehen.
Dagegen hilft es, vor den Dateinamen ein zusätzliches Argument "--" zu
packen, wie schon gezeigt. Dies weist "rm" an, das folgende Argument 1:1
als Dateiname zu verwenden, ohne zu versuchen, es als Option zu
interpretieren, also
Offenbar haben wir hier nur Problem 2. Die Anführungsstriche nützen
nichts, denn das "--set" kommt schon korrekt bei "rm" an, aber "rm"
interpretiert es als Option. An dieser Stelle sind eventuelle
Anführungsstriche schon längst wieder entfernt worden.
Anführungsstriche würden nur etwas bringen, wenn der Dateiname
zusätzlich noch ein Leerzeichen enthielte, z.B.:
Die Anführungsstriche werden von der Shell interpretiert und entfernt,
und die beiden Strings "--" und "--s et" werden (*ohne
Anführungsstriche*) an den Kernel und den Subprozess (rm) übergeben.