2012-08-28 2 views
6

私は、長いパラメータを扱うbashスクリプトを作りたいと思っています。私はgetoptを見つけましたが、OS Xではサポートされていません。なぜgetoptがBSDで実装されたのですかGNUでは実装されなかったのですか? 私はGNU C libにgetoptをビルドしようとしましたが、Linuxで貧弱なスキルで失敗しました。Macで「getopt」コマンドを使用して、long paramをbashで処理する方法はありますか?

誰でもこの仕事をしましたか?

+0

可能重複シェルスクリプトを使用して長いコマンドラインオプションと短いコマンドラインオプションを取得する](http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-オプション) – ghoti

答えて

1

代わりにgetoptsを使用し、短いオプションを使用することをお勧めします。 this StackOverflow Q&Aで、getoptsの動作を確認できます。短いオプションはOSXのコマンドラインツール全体でより標準的であり、一貫性は良いことです。

またgetoptsはbashに組み込まれているので、OSXだけでなく、bashを実行できる他のすべてのプラットフォームでも利用できます。

OSXでも利用できるgetoptがあることに注意してください。ターミナルからman getoptと入力すると、そのマニュアルが表示されます。長いオプションはサポートしていません。これは、OSX上で実行するツールを書くときに長いオプションを使用しないようにする良い理由です。

とにかくこれを行うにはgetoptmacportsからインストールできます。また、移植性を向上させたい場合は、長い引数処理をロールバックすることもできます。

いくつかのコードを投稿してください。デバッグに役立ちます。

10

brew bottle for getoptがあります。

brew install gnu-getoptを実行してください。

あなただけ強制的に、それはシステムを置き換えるよう(あなたのシステムを破壊するかもしれないリンクがあることに注意してください /usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt

のようにそれのためのパスを指定するか、それが

/usr/local/bin/にリンクされますbrew link --force gnu-getoptを使用できますgnuでgetoptを実行します)。

0

私はそうのように、gnu-getoptをインストールするには、自作を使用して、その後のgetoptのためのCMDのパスを指定するには、あなたの~/.bash_profileファイルへ$FLAGS_GETOPT_CMDを追加し、自作の場所を指してお勧めします。bashでgetoptsはを使用して、[の

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

私は人々がどのようにdownvoteを愛するが、理由についてのゼロのコメントを提供する... tsk tsk – sMyles

関連する問題