Hallo alle,
ich sitze an einem Problem, bei dem ich anscheinend Tomaten auf den Augen habe.
Ich habe mir zwei Scripte geschrieben. Das eine ruft das andere auf und übergibt ermittelte Optionen und einen Dateinamen. Das andere wertet die Optionen mittels getopt aus und soll dann arbeiten.
Natürlich können die Optionen und der Dateiname Whitespace enthalten. Deshalb übergebe ich alles gequotet. Das zweite Script bekommt die Optionen auch sauber angereicht, aber nach der Verarbeitung durch getopt ist alles nur noch unbrauchbar, denn die Optionen werden miteinander verwürfelt. Zudem unterscheidet sich das von getopt geparste Ergebnis auch noch, je nachdem, ob ich den Aufruf von einem Script durchführe oder von der Komandozeile aus.
Damit die ganze Sache etwas plakativer wird, habe ich zwei Scripte gebastelt, das erste (autolnk_test) ruft das zweite (lnk_test) auf. Sie zeigen das Ergebnis bei verschiedenen Konstellationen. Einzig Optionen ohne Whitespace werden korrekt ausgewertet.
Hier ist autolnk_test
und hier lnk_test
Wenn die Scripte in einem Verzeichnis liegen, sieht mein Aufruf so aus:
1 | sh ./autolnk_test
|
Wie muss der Aufruf sein, damit getopt Optionen mit Whitespace richtig abarbeitet? Irgendetwas übersehe ich, und freue mich über jede Hilfe.