Janka wrote:Dann willst du keinen Dateidescriptor übergeben, sondern einen Dateinamen.
Hm, will ich. Bin beim Forschen
Praktisch jedes Programm nimmt den nur bis zum ersten Leerzeichen an. Alles, was danach kommt, wird entweder ignoriert oder als zweites [, drittes, viertes, ...] Argument interpretiert. Das äußert sich z.B. so:
Da will Iceweasel (Firefox für Debian)
ganz korrekt eine Seite mit dem Link "file:///pfad/dat" öffnen, die's natürlich nicht gibt.
Der Editor präsentiert mir drei (natürlich leere) Tabs, überschrieben mit den "Dateinamen" "dat", "ei" und "name.txt".
Na, und so weiter ... Meine selbstgebastelten Funktionen erst noch ...
Also wie lässt sich ein Dateiname (oder allgemein ein String mit Leerzeichen) korrekt als
ein Argument übergeben? Im Terminal doch ganz einfach:
Im Script funktioniert
schon wieder nicht mehr, wenn der Wert von $datei ein String mit Leerzeichen ist.
Wiederum:
Code: Select all
case $@ in
*.asc) anweisung(en) ;;
-
-
-
esac
Das packt's komischerweise. Und das macht das Script / die Shell doch auch nicht alleine, da wird doch auch ein Programm aufgerufen, oder?
Mir schwant langsam: Das Ganze lässt sich doch sicher ganz elegant umgehen, wenn man keinen String, sondern einen Dateideskriptor übergibt (wie offenbar RapidSVN meinem Script) - aber wie?
(Aus höheren Sprachen wie C, VB, ... ist mir Analoges geläufig als "Kontext", "Call by Reference", "Pointer" oder wie auch immer. Und irgendwie muss sich das wohl hinter dem geheimnisvollen Argument %1 verstecken - das sehe ich bei RapidSVN auch beileibe nicht zum ersten Mal) ...