Eu gostaria de comentar um único sinalizador em um comando de uma linha. Bash apenas parece ter from # till end-of-line
comentários. Estou vendo truques como:
ls -l $([ ] && -F is turned off) -a /etc
É feio, mas melhor que nada. Existe uma maneira melhor?
O seguinte parece funcionar, mas não tenho certeza se é portátil:
ls -l `# -F is turned off` -a /etc
#comment
truque também é mencionado aqui: stackoverflow.com/questions/9522631/…${IFS#comment}
introduzido por @pjh nos comentários. Nenhum sub-shell é chamado.Respostas:
O meu preferido é:
Comentando em um script Bash
fonte
$(#comment)
não funciona.)
como parte do próprio comentário. A maioria dos desafios do bash se deve à retro compatibilidade com versões mais antigas, e uma estratégia comum é usar a solução mais antiga possível.true && `# comment` && true
é uma expressão válida. Um comentário real geraria algo como:syntax error near unexpected token
&& ''Acho mais fácil (e mais legível) copiar a linha e comentar a versão original:
fonte
$(: ...)
é um pouco menos feio, mas ainda não é bom.fonte
$(: ...)
sintaxe não parece permitir comentários incorporados: enquantoecho "foo" `# comment` "bar"
o comentário será finalizado no segundo backtick, o suposto equivalenteecho "foo" $(: # comment) "bar"
não analisa nada por trás do#
.Que tal armazená-lo em uma variável?
fonte
Aqui está minha solução para comentários embutidos entre vários comandos canalizados.
Exemplo de código não comentado:
Solução para um comentário de canal (usando uma função auxiliar):
Ou, se preferir, aqui está a mesma solução sem a função auxiliar, mas é um pouco mais confusa:
fonte
A maioria dos comandos permite que os argumentos cheguem em qualquer ordem. Basta mover os sinalizadores comentados para o final da linha:
Em seguida, para ativá-lo, remova o comentário e remova o texto:
fonte
#
sem um único espaço em branco após o comando. obrigado!Se você souber que uma variável está vazia, use-a como um comentário. Obviamente, se não estiver vazio, ele estragará seu comando.
§ 10.2 Substituição de Parâmetros
fonte
${name:=comment}
para ser seguro.Para desativar uma parte de um comando como
a && b
, simplesmente criei um script vaziox
que está no caminho, para que eu possa fazer coisas como:quando eu preciso construir, e
quando não (usando Ctrl + Ae Ctrl + Epara ir para o início e o fim).
Conforme observado nos comentários, outra maneira de fazer isso é o Bash interno, em
:
vez dex
:fonte
:
Como em:string; of; commands; : disabled; enabled;
Se o comentário vale a pena ser feito, provavelmente ele pode ir no final da linha ou em uma linha por conta própria. Raramente acho necessário comentários dentro da linha com o código antes e depois do comentário em qualquer idioma.
Ah, há uma exceção, que é o dialeto do SQL que eu costumo usar que usa '{comments}'. Ocasionalmente, escreverei:
Mas mesmo isso é exagero.
fonte