たくさんのデプロイスクリプトに取り組んでいると想像してみてください。
これらのシェルスクリプトは、コメントとリンクで詳細に文書化されており、人間が読むことを目的としています。
たとえば、それらをREADME.mdまたはINSTALL.mdに変換して、リポジトリをより使いやすくするのは便利ではないでしょうか。
なぜあなたはこれをするのですか?初心者にとっては、実質的な重複が発生する可能性のある重複作業を回避することができます。また、それは 信頼できる唯一の情報源の原則 と一致します。
より一般的な#
とは対照的に、スクリプトでヒアドキュメントを使用すると、他の形式のドキュメントにスムーズに移行できます。例えば:
#!/bin/sh
case $1 in (*-h*)
sed '/^:/,/^DOC/!d;s/^:/cat/' "$0" |sh -s "$@"
exit;;esac
: <<DOC
Enter as many lines of documentation as you might need -
just don't begin any but the first with : or the last with DOC.
"Quotes are " fine - and $params can be expanded if you
don't quote the DOC delimiter.
DOC
... #Shell script
... #more of same
: <<\DOC
- *Markdown Comment* -
- or you can quote the delimiter and be more
free to use `backquotes` or whatever you like.
You can mark the comments up in markdown
in the first place, and print them w/ `"$0" -h`.
DOC
詳細については、 heredocumentsのtldpの例19-2 を参照してください。
プログラムの複雑な部分がどのように機能するかを説明するコメントは、どのような形式であっても、readmeに配置されることはめったにありません。
-h
を使用してプログラムを呼び出す出力がreadmeまたはman
ページとして使用されるパッケージはすでに存在します。例えば。 GNU help2man たとえばこれを行います。
IMO、シェルスクリプトが非常に複雑になり、(使用法や操作を説明するために)大量のドキュメントが必要になった場合は、Python/Perl/Rubyでスクリプトを書き直すことを検討する必要があります。
ご覧ください https://github.com/nerds-odd-e/bbuddy/blob/master/DEPLOY.md
このマークダウンファイルは、実際には純粋なbashファイルです。このファイルは、bashを直接使用して実行できます。
いくつかのコードスニペット:
...
### Install git, curl, unzip
apt_install git curl unzip
### Download JDK8
get_url "${MIRROR_SITE}/jdk-${JDK_VERSION}-linux-i586.tar.gz"
### Set `$Java_HOME`
export Java_HOME="$INSTALL_DIR/${JDK_VERSION_MAP[$JDK_VERSION]}"
...
私には、スクリプトのソースコードから直接マークダウンドキュメントを生成したいようです。これは私にはnowebのように聞こえますが、nowebはドキュメント形式としてマークダウンをサポートしていません(afaik)。ただし、おそらくそれに対するサポートを追加することができます。