GNU/Linux >> Linux の 問題 >  >> Linux

Getopt、Getopts、または手動解析–短いオプションと長いオプションの両方をサポートしたい場合は何を使用しますか?

現在、次の要件を持つBashスクリプトを作成しています。

  • さまざまなUnix/Linuxプラットフォームで実行する必要があります
  • 短いオプションと(GNU)長いオプションの両方をサポートする必要があります

getoptsを知っています 移植性の観点からは好ましい方法ですが、AFAIKは長いオプションをサポートしていません。

getopt 長いオプションをサポートしていますが、BashGuideはそれに対して強く推奨しています:

getopt(1)は絶対に使用しないでください。 getoptは、空の引数文字列、または空白が埋め込まれた
引数を処理できません。
存在したことを忘れてください。

したがって、手動解析のオプションはまだあります。これはエラーが発生しやすく、かなりの定型コードを生成するため、自分でエラーを処理する必要があります(getopt(s) 自分でエラー処理を行います。

それで、この場合の好ましい選択は何でしょうか?

承認された回答:

さまざまなUnicesに移植可能である必要がある場合は、POSIXshに固執する必要があります。そして、そこにあるAFAIUには、手作業で議論を処理する以外に選択肢はありません。


Linux
  1. TCP_NODELAY と TCP_CORK をいつ使用する必要がありますか?

  2. ファイル記述子とミューテックスの両方を待ちたいのですが、これを行うための推奨される方法は何ですか?

  3. caddr_t の重要性と使用時期は?

  1. Linuxでいつpthread_exit()を使用し、いつpthread_join()を使用するのですか?

  2. いつ Bash を使用し、いつ Perl/Python/Ruby を使用するか?

  3. useradd の -g オプションと -G オプションの違いは何ですか?

  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. cURLコマンドとは何ですか?その使用方法は?

  3. TAMとは何ですか?なぜあなたはTAMになりたいのですか?