Esse não é um comentário de várias linhas. #
é um comentário de linha única.
:
(colon) não é um comentário, mas um shell criado Em um comando que é basicamente um NOP , uma operação nula que não faz nada exceto retornar true, como true
(e assim definindo $?
para 0 como efeito colateral). No entanto, como é um comando, ele pode aceitar argumentos e, como ignora seus argumentos, na maioria dos casos, age superficialmente como um comentário. O principal problema com este kludge é que os argumentos ainda são expandidos, levando a uma série de conseqüências não intencionais. Os argumentos ainda são afetados por erros de sintaxe, os redirecionamentos ainda são executados, então : > file
truncará file
e : $(dangerous command)
substituições ainda serão executadas.
A maneira menos surpreendente e completamente segura de inserir comentários em scripts de shell é com #
. Atenha-se a isso mesmo para comentários de várias linhas. Nunca tente (ab) usar :
para comentários. Não há um mecanismo dedicado de comentário de várias linhas no shell que seja análogo ao formato /* */
da barra invertida em% linguagens como C
.
Por uma questão de perfeição, mas não porque seja uma prática recomendada, vou mencionar que é possível usar aqui-documents para fazer" comentários "com várias linhas:
: <<'end_long_comment'
This is an abuse of the null command ':' and the here-document syntax
to achieve a "multi-line comment". According to the POSIX spec linked
above, if any character in the delimiter word ("end_long_comment" in
this case) above is quoted, the here-document will not be expanded in
any way. This is **critical**, as failing to quote the "end_long_comment"
will result in the problems with unintended expansions described above.
All of this text in this here-doc goes to the standard input of :, which
does nothing with it, hence the effect is like a comment. There is very
little point to doing this besides throwing people off. Just use '#'.
end_long_comment