私は、長いパラメータを扱うbashスクリプトを作りたいと思っています。私はgetopt
を見つけましたが、OS Xではサポートされていません。なぜgetopt
がBSDで実装されたのですかGNUでは実装されなかったのですか? 私はGNU C libにgetopt
をビルドしようとしましたが、Linuxで貧弱なスキルで失敗しました。Macで「getopt」コマンドを使用して、long paramをbashで処理する方法はありますか?
誰でもこの仕事をしましたか?
私は、長いパラメータを扱うbashスクリプトを作りたいと思っています。私はgetopt
を見つけましたが、OS Xではサポートされていません。なぜgetopt
がBSDで実装されたのですかGNUでは実装されなかったのですか? 私はGNU C libにgetopt
をビルドしようとしましたが、Linuxで貧弱なスキルで失敗しました。Macで「getopt」コマンドを使用して、long paramをbashで処理する方法はありますか?
誰でもこの仕事をしましたか?
代わりにgetopts
を使用し、短いオプションを使用することをお勧めします。 this StackOverflow Q&Aで、getoptsの動作を確認できます。短いオプションはOSXのコマンドラインツール全体でより標準的であり、一貫性は良いことです。
またgetoptsはbashに組み込まれているので、OSXだけでなく、bashを実行できる他のすべてのプラットフォームでも利用できます。
OSXでも利用できるgetopt
があることに注意してください。ターミナルからman getopt
と入力すると、そのマニュアルが表示されます。長いオプションはサポートしていません。これは、OSX上で実行するツールを書くときに長いオプションを使用しないようにする良い理由です。
とにかくこれを行うにはgetopt
をmacportsからインストールできます。また、移植性を向上させたい場合は、長い引数処理をロールバックすることもできます。
いくつかのコードを投稿してください。デバッグに役立ちます。
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を実行します)。
私はそうのように、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
私は人々がどのようにdownvoteを愛するが、理由についてのゼロのコメントを提供する... tsk tsk – sMyles
可能重複シェルスクリプトを使用して長いコマンドラインオプションと短いコマンドラインオプションを取得する](http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-オプション) – ghoti