web-dev-qa-db-ja.com

使用法を印刷するときにコマンドライン引数がオプションであることを示す方法

次のいずれかの方法で実行できるスクリプトがあると仮定します。

./foo arg1 arg2
./foo

コマンドの正しい使用法を出力するときにarg1とarg2が必須の引数ではないことを示す一般的に受け入れられている方法はありますか?

次の使用方法の出力のように、引数が角かっこで囲まれて印刷されていることに気づいたことがあります。

Usage: ./foo [arg1] [arg2]

これらの括弧は、引数がオプションであることを意味しますか、それとも引数がオプションであることを示す一般的に受け入れられている別の方法がありますか?

31
Anthony Jack

私は個人的にはスイッチがオプションであることを示す「標準」(特定の言語の記述方法を定義する標準があるなど)を実際に見たことはありませんが、それは本当に個人的な選択ですが、 IBMのドキュメント および Wiki 、私が個人的に見た多数のシェルスクリプト(およびさまざまなプログラムのコマンドラインオプション)と共に、「事実」は角括弧([])オプションのパラメーターとしてのパラメーター。 Linuxからの例:

ping(出力をトリミング...)

usage: ping [-c count] [-t ttl] Host

どこ [-c count]および[-t ttl]はオプションのパラメーターですが、Hostはオプションではありません。

個人的にも同様に、[]はオプションのパラメーターを意味します。

25
txtechhelp

これは何よりも標準的なものだと思います。

Open Group Base Specifications Issue 7

IEEE Std 1003。1、2013年版

Copyright©2001-2013 The IEEE and The Open Group

第12章-ユーティリティ規約

長年にわたってさまざまな意味を表すのによく見た多くのことは言及していないようです。

  • 角括弧 [optional option]
  • 角括弧 <required argument>
  • 中括弧{default values}
  • 括弧(miscellaneous info)

編集:これらは単なる慣習であることを追加する必要があります。重要なことは、賢明な慣習を選び、自分の慣習を明確に述べ、一貫してそれに従うことです。柔軟に対応し、ターゲットプラットフォームで最も頻繁に発生するような規則を作成します。ユーザーにとって最も簡単に適応できます。

44
user2895783

はい、角括弧はUnixのマニュアルページのオプションの引数を示します。

「man man」から:

[-abc] []内の任意またはすべての引数はオプションです。

12
mpez0