ユーザーが設定する必要のあるいくつかの変数を含むシェルスクリプトを作成しています。おそらく一連の質問をすることで、スクリプトをダウンロードして構成するためのインストーラーがあります。問題のスクリプトは、他の開発者を対象としています。
これは、いくつかの方法で実装できます。
スクリプト自体でプレースホルダーを使用し、
sed
インストール中にそれらを置き換えるために使用します(/programming/415677/how-to-replace-placeholders-in-a-text-fileのようなもの)長所:すべての変数定義はスクリプト内に含まれています。スクリプトを手動でダウンロードし、インストーラーよりもエディターを好むユーザー向けに変数を構成するのは簡単です。
短所:インストーラーを使用して変数を設定し直すと、変数を再構成するのは困難です。エラーが発生しやすい、より複雑な正規表現を作成しない限り。
configファイルを使用します。基本的に、割り当てのある別のシェルスクリプトを使用
source
して、それを使用します。(そして、おそらくそれを配置し~/.scriptname
ますか?メインスクリプトはにコピーされます/usr/local/bin
)長所:スクリプトの再構成は簡単です。メインスクリプトからそれを行うためのパラメータを追加することもできます(おそらく最初のソリューションでも動作しますが、それ自体からスクリプトを編集することは非常に良い考えのようには聞こえません)
短所:スクリプトは2つのファイルに依存するようになり、ユーザーは構成ファイルを作成するためにインストーラーを実行する必要があります。これは、構成ファイルが存在しない場合に構成ファイルを自動生成することで解決できます。ただし、外部の構成ファイルを見つけることは、スクリプトをダウンロードし、編集し、それを実行したいだけのユーザーにとっては依然として面倒です。
また、インストール後にユーザーが構成を管理する方法に関するいくつかのオプション:
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxyのようなGit $ myscript config server.httppath / home / johndoe / webInteractive
$ myscript config
サーバーのホスト名を入力します
。example.orgサーバー上のプロキシへのパスを入力します:/ home / johndoe / proxy
サーバー上のhttpディレクトリへのパスを入力します:/ home / johndoe / web長いオプションを使用したgetopts
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webシンプルな
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
これを行う他の方法はありますか?
ベストプラクティス、エレガントなものはありますか?