Bashスクリプト:ヘルプファイルはスクリプト内にありますか、それとも別のファイルにありますか?

Bashスクリプト:ヘルプファイルはスクリプト内にありますか、それとも別のファイルにありますか?

私は完全な機能を備えたプログラムになるという最終目標を持ってスクリプトを書いています。私が知っている限り、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 - タブは無視されますが、スペースは保持されます。カットして貼り付けるときに発生する混乱を防ぐために、これを行います。

おすすめ記事