Eu concordo com o Ouki em relação a mantê-lo simples e dentro do script por enquanto. Quando e se você decidir que quer uma página man, você pode transplantar para lá e deixar uma ajuda simplificada.
Examinando 3 de 4 das suas desvantagens para essa abordagem em comparação com um arquivo separado:
-
The main script called with myscript command would be lighter
Haveria um número trivial de bytes carregados na memória - tão trivial que seria bobagem pensar em fazer isso.
-
It simplifies the human-reading of the script
Se você é bem organizado, o oposto é verdadeiro, já que ter essa ajuda na fonte é uma forma de documentação para o próprio código (veja abaixo).
-
It could even allow to display only the help page with a GUI, and/or print it.
A ênfase na modularidade em sistemas de estilo unix significa que você é melhor não se preocupar com isso. Se o seu script grava na saída padrão, o usuário é capaz de combinar isso com quaisquer ferramentas que ele / ela preferir em relação à impressão e exibição. Existem algumas coisas mais irritantes do que os programas que se esforçam para implementar recursos desnecessários que reflitam, por exemplo, os meios preferidos do autor de visualizar a documentação. Não faça isso. Se for uma ferramenta de linha de comando em primeiro plano, sua saída normal deve ser o fluxo de saída padrão e o erro para o fluxo de erro padrão. Não fique maluco.
Se você não tem conhecimento dos documentos "aqui" , isso pode simplificar a tarefa para você e mantenha a fonte mais clara e mais legível:
#!/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
Observe que há uma função chamada para a opção de ajuda, que mantém o if
block arrumado. Isso também significa que você pode colocar essa função no topo , tornando-a uma forma óbvia de referência à própria fonte.
Você pode recuar o documento aqui em myHelp()
, BTW - as guias são ignoradas, mas os espaços são preservados. Eu fiz isso dessa forma aqui para evitar qualquer resultado confuso de cortar e colar.