24

bash スクリプトで長いパラメータを処理したいと考えています。が見つかりましたが、OS X ではサポートされていません。GNU ではなく BSD で実装されgetoptている理由を誰か教えてもらえますか? getoptGNU C lib でビルドしようとgetoptしましたが、Linux のスキルが低いために失敗しました。

誰かがこの仕事をしましたか?

4

3 に答える 3

28

getopt 用の醸造ボトルがあります。

実行するだけbrew install gnu-getoptです。

次のようにパスを指定できます /usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt

またはbrew link --force gnu-getopt、リンクされるように使用します/usr/local/bin/

リンクを強制すると、システムが破損する可能性があることに注意してください (システムの getopt が gnu のものに置き換えられるため)。

を定義することを提案する他の回答も参照してくださいFLAGS_GETOPT_CMD

于 2016-05-27T14:07:51.013 に答える
2

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

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

getoptOSX でも利用できるがあることに注意してください。ターミナルから、入力man getoptしてドキュメントを表示します。長いオプションはサポートされていません。これは、OSX で実行するツールを作成するときに長いオプションを使用しない正当な理由です。

とにかくこれを行いたい場合は、 macportsgetoptからインストールできます。あるいは、移植性を高めたい場合は、独自の長い引数の処理をロールすることができます。

いくつかのコードを投稿してください。デバッグを支援します。

于 2012-08-28T03:12:30.677 に答える