2012-08-28 7 views
6

Ich möchte mein Bash-Skript mit langen Parametern beschäftigen. Ich fand getopt, aber es wird nicht in OS X unterstützt. Kann mir jemand sagen, warum getopt wurde von BSD implementiert, aber nicht GNU? Ich versuchte getopt in GNU C lib zu bauen, aber es scheiterte an meinen schlechten Fähigkeiten mit Linux.Wie kann ich Bash Deal mit langen Param mit "Getopt" -Befehl in Mac machen?

Hat jemand diese Arbeit gemacht?

+0

möglich Duplikat [Mit getopts in bash Shell-Skript, um lange und kurze Befehlszeilenoptionen zu erhalten] (http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line- Optionen) – ghoti

Antwort

1

Es ist im Allgemeinen eine bessere Idee, stattdessen getopts zu verwenden und bei kurzen Optionen zu bleiben. Sie können getopts in Aktion in this StackOverflow Q&A sehen. Kurze Optionen sind in allen OSX-Befehlszeilentools Standard und Konsistenz ist eine gute Sache.

Getopts ist auch in bash integriert, also ist es definitiv in OSX verfügbar, ebenso wie jede andere Plattform, die Bash ausführen kann.

Beachten Sie, dass ein getopt auch in OSX verfügbar ist. Geben Sie man getopt aus Terminal ein, um seine Dokumentation anzuzeigen. Lange Optionen werden nicht unterstützt. Dies ist ein guter Grund, keine langen Optionen zu verwenden, wenn Sie Tools schreiben, die unter OSX laufen. Wenn Sie dies trotzdem tun wollen, können Sie getopt von macports installieren. Wenn Sie eine bessere Portabilität wünschen, können Sie alternativ eine eigene lange Argumentbehandlung durchführen.

Posten Sie etwas Code, und wir werden helfen, es zu debuggen.

10

Es gibt eine brew bottle for getopt.

Führen Sie einfach brew install gnu-getopt.

können Sie entweder den Pfad für sie wie /usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt

Oder nutzen brew link --force gnu-getopt so wird es in /usr/local/bin/

Seien Sie sich bewusst sein, verbunden sein, dass zwingen Verknüpfung kann Ihr System werden korrumpiert (wie es das System ersetzt getopt von der gnu one).

0

Ich empfehle Homebrew mit gnu-getopt zu installieren und dann $FLAGS_GETOPT_CMD auf Ihre ~/.bash_profile Datei Hinzufügen den cmd-Pfad für getopt angeben, an dem Homebrew-Standort zeigen, etwa so:

brew install gnu-getopt 
sudo echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bash_profile 
. ~/.bash_profile 
+0

Ich liebe, wie Leute downvote, aber liefern ZERO Kommentare, warum ... tsk tsk – sMyles