Derzeit schreibe ich ein Bash-Skript, das die folgenden Anforderungen hat:
- es sollte auf einer Vielzahl von Unix/Linux-Plattformen laufen
- es sollte sowohl kurze als auch (GNU) lange Optionen unterstützen
Ich weiß, dass getopts
wäre der bevorzugte Weg in Bezug auf die Portabilität, aber AFAIK unterstützt keine langen Optionen.
getopt
unterstützt lange Optionen, aber der BashGuide rät dringend davon ab:
Verwenden Sie niemals getopt(1). getopt kann keine leeren Argumentstrings oder
Argumente mit eingebetteten Leerzeichen verarbeiten. Bitte vergiss, dass es jemals
existiert hat.
Es besteht also weiterhin die Möglichkeit des manuellen Parsings. Dies ist fehleranfällig, produziert ziemlich viel Boilerplate-Code, und ich muss Fehler selbst behandeln (ich denke, getopt(s)
Fehlerbehandlung selbst durchführen).
Was wäre also in diesem Fall die bevorzugte Wahl?
Akzeptierte Antwort:
Wenn es auf eine Reihe von Unices portierbar sein muss, müssen Sie sich an POSIX sh halten. Und AFAIU, da hast du einfach keine andere Wahl, als die Argumentation von Hand zu handhaben.