
私は完全な機能を備えたプログラムになるという最終目標を持ってスクリプトを書いています。私が知っている限り、BASHは彼の目的(Y-PPAなどのPPA管理)に十分です。 help 出力方法を知りたいですmyscript --help
。
現在のヘルプはecho -e
スクリプト内に直接作成され、呼び出しを使用しますif [ "$1" == "--help" ] || [ "$1" == "-h" ]
(すぐにgetoptsに切り替える予定です)。
しかし、何が良いですか?そのhelp
部分をスクリプトに残しますか、ヘルプを含む他のファイルを呼び出す行を作成しますか?
私の考えでは、次の理由でスクリプトに残しておく方が良いかもしれません。
- 私のプログラムはまだテキストファイルスクリプトです。
- ハードドライブのスペースを節約します。
- 破損した場所や別の場所にある可能性がある他のファイルを表示するときのエラーを防ぎます。
ただし、次の理由でヘルプを含む他のテキストファイルを使用する方が良い場合があります。
- コマンドで呼び出されるデフォルトのスクリプト
myscript
がより軽くなります。 - 人がスクリプトを読むのを簡単にします。
- 必要に応じてヘルプページを個別に更新できます。
- GUIを使用してヘルプページを表示または印刷することもできます。
ご存知のように、私はこれを行うための「一般的な」方法が何であるかわかりません。ありがとうございます!
PS:また、完全なプログラムをリリースする予定なので、マニュアルページがあればいいでしょう。おそらく.debかもしれません。
答え1
ウキのコメントに同意します。今はスクリプト内で簡単に保ちましょう。マニュアルページが必要だと判断したら、そこに移植して簡単なヒントを残すことができます。
個々のファイルと比較して、このアプローチの4つの欠点のうち3つを確認してください。
myscriptコマンドを使用して呼び出されるデフォルトのスクリプトは、より軽くなります。
メモリにロードされたバイト数はわずかです。考えるにはあまりにも微妙です。
人がスクリプトを読むのを簡単にします。
体系的に整理されていればその逆になります。なぜなら、ソースコードのヘルプはコード自体のドキュメント形式であるからです(下記参照)。
GUIを使用してヘルプページを表示または印刷することもできます。
Unixスタイルのシステムでモジュール性を強調することは、それを気にしない方が良いことを意味します。スクリプトが標準出力として作成されると、ユーザーはそれを自分の好みの印刷および表示ツールと組み合わせることができます。作成者が好む文書の表示方法など、不要な機能を実装しようとするプログラムよりも迷惑なことはありません。しないでください。フロントエンドコマンドラインツールの場合、通常の出力は標準出力ストリームに移動し、エラーは標準エラーストリームに移動する必要があります。狂わないでください。
知らないなら「ここ」ファイル、作業を簡素化し、ソースコードをよりきれいで読みやすくすることができます。
#!/bin/bash
function myHelp () {
# Using a here doc with standard out.
cat <<-END
Usage:
------
-h | --help
Display this help
-n
Do nothing loudly.
END
}
doNothing=0;
while [ -n "$1" ]; do
case "$1" in
-h | --help)
myHelp
exit
;;
-n)
doNothing=1;
shift
;;
esac
done
if [ $doNothing -gt 0 ]; then
echo -e "****\nDoing nothing!\n****"
fi
if
ブロックをきれいに保つヘルプオプションを呼び出す関数があります。これはまた、関数を変換できることを意味します。上に、ソース自体に対する明確な参照形式になります。
ここから文書をインデントできますmyHelp()
。 btw - タブは無視されますが、スペースは保持されます。カットして貼り付けるときに発生する混乱を防ぐために、これを行います。
答え2
ここで見た2つの方法があります。
- インライン部分を設定するか、PODに類似ヘルプとして表示される文書または
.man
ローカルman
構造に追加するファイルを正しく定義します。
非常に大きなツールがあり、インターフェイス/ GUIがすでに別のファイルにある場合を除いて、正直なところ、これらの助けを提供するために別々のファイルを持つことは意味がないと思います。
だから滞在しなさい」きちんとすっきり":コマンドラインフロントエンドのすべての内容が1つのファイルにあります。
インラインテキストまたはヘルプ表示のみを目的とする適切に定義された関数で構成できます。したがって、これから10年間スクリプトを維持している貧しい人々にとって、これは悪いことではありません。