Existe uma maneira simples de comentar um bloco de código em um script de shell?
Existe uma maneira simples de comentar um bloco de código em um script de shell?
Respostas:
Na festança:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
O delimitador '
e o '
contorno END
são importantes; caso contrário, coisas dentro do bloco, como por exemplo $(command)
, serão analisadas e executadas.
EOF
é um exemplo clássico (e assim é !
, um ponto de exclamação em sua própria), mas você poderia usar SNURFLE_BURGERS
ou classical_end_marker
ou qualquer outra palavra que não aparece em uma linha por si próprio no material comentou-out. Eu gostaria de experimentar espaços etc, mas a palavra poderia muito bem trabalhar com eles também.
:
) que não lê sua entrada e sempre sai com um valor bem-sucedido e envia o "comentário" como entrada. Não é muito.
Não há nenhum comentário em bloco no shell script.
Usando vi
(sim vi
) , você pode comentar facilmente da linha n para m
<ESC>
:10,100s/^/#/
(que lê, da linha 10 a 100, substitua o início da linha (^) pelo sinal #.)
e un comentário com
<ESC>
:10,100s/^#//
(que lê, da linha 10 a 100 substitua o início da linha (^) seguido de # com a anotação //.)
vi
é quase universal em qualquer lugar onde houver /bin/sh
.
|noh
-o ao final. O pipe separa comandos adicionais e noh
é para sem destaque. O destaque do termo de pesquisa será retomado automaticamente na próxima vez que você pesquisar algo. Exemplo::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
então 0
ou por qualquer outra maneira de navegar). Em seguida, use <CTRL>+V
para entrar no modo de bloco visual e destacar o início de todas as linhas que você deseja comentar (neste exemplo 90 J
). Em seguida, pressione SHIFT+I
para inserir antes do bloco realçado. Digite o sinal de comentário (por exemplo #
) e pressione <ESC>
para concluir sua prefixação. Essa explicação parece super longa, mas, na minha experiência, é muito mais rápido na prática.
Você pode usar:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];
também funciona.
if false;
. stackoverflow.com/a/18019516/2097284
A seguir deve trabalhar para sh
, bash
, ksh
ezsh
.
Os blocos de código a serem comentados podem ser inseridos BEGINCOMMENT
e ENDCOMMENT
:
[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
A execução do código acima resultaria em:
This is outside the commented block
Para remover o comentário dos blocos de código comentados, digamos
alias BEGINCOMMENT="if : ; then"
ao invés de
alias BEGINCOMMENT="if [ ]; then"
no exemplo acima.
se você pode evitar as aspas simples:
__='
blah blah comment.
'
Use : '
para abrir e '
fechar.
Por exemplo:
: '
This is a
very neat comment
in bash
'
Este é do exemplo de Vegas encontrado aqui
No Vim:
shift-V
(entre no modo visual), suba para baixo as linhas de destaque no bloco:s/^/#/
o comando ficará assim:
:'<,'>s/^/#
aperte enter
por exemplo
shift-V
jjj
:s/^/#
<enter>
:s/^#/
Você pode usar o modo Visual Block do Vi / Vim, projetado para coisas como esta:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
O comentário não seria:
Ctrl-V
Highlight #'s
d
l
Esta é a maneira interativa do vi de fazer esse tipo de coisa, em vez de contar ou ler os números das linhas.
Por fim, no Gvim, você usa ctrl-q para entrar no modo Visual Block em vez de ctrl-v (porque esse é o atalho para colar).
Com toda a honestidade, por que tanta engenharia ...
Considero realmente uma prática ruim escrever código ativo para gerar código passivo.
Minha solução: a maioria dos editores tem o modo de seleção de blocos. Basta usá-lo para adicionar # a todas as linhas que você deseja comentar. Qual é o grande problema ...
Exemplo do bloco de notas:
Para criar: Mantenha pressionada a tecla Alt, pressione #.
Para excluir: mantenha pressionada a tecla Alt pressionada, mova a seta para a direita e exclua.
Uma variação do truque aqui-doc na resposta aceita por sunny256 é usar as palavras-chave Perl para comentários. Se seus comentários são realmente algum tipo de documentação, você pode começar a usar a sintaxe Perl dentro do bloco comentado, o que permite imprimi-lo bem formatado, convertê-lo em uma página de manual etc.
No que diz respeito ao shell, você só precisa substituir 'END'
por '=cut'
.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Encontrado em " Incorporando documentação no shell script ")
Outro modo é: Se o seu editor NÃO TEM opção de comentário em BLOCO,
FEITO
FUNCIONA com QUALQUER editor
Eu gosto de uma única linha abrir e fechar:
if [ ]; then ##
...
...
fi; ##
O '##' me ajuda a encontrar facilmente o início e o fim do comentário do bloco. Posso colar um número após o '##' se tiver vários deles. Para desativar o comentário, basta colocar um '1' no '[]'. Também evito alguns problemas que tive com aspas simples no bloco comentado.