Ao criar scripts de shell usando pipelines e usando a barra invertida para continuar linhas, desejo inserir comentários em linhas separadas , de maneira robusta, legível e portátil.
Por exemplo, dado esse comando de várias linhas não comentado (roubado do @DigitalRoss por sua clareza):
echo abc |
tr a-z A-Z |
sort |
uniq
... o abaixo é esteticamente o mais próximo do que eu quero realizar, mas por razões óbvias, não funciona ... e sim, eu estou ciente de que isso não é algo que vale a pena comentar:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
As respostas relacionadas existentes parecem insatisfatórias para mim , da seguinte maneira:
Primeiro, a resposta de glenn jackman (adicionando argumentos a uma matriz e, em seguida, executando a matriz) funciona para comandos únicos, mas não funciona para pipelining (e, mesmo que tivesse, adiciona complexidade que eu gostaria de evitar).
Segundo, a resposta do @Gilles aqui (que usa :
) também não parece funcionar com o pipelining, porque altera o fluxo do pipeline:
$ echo "abc" | :
$
( OBSERVAÇÃO : Se houver um equivalente a :
que passe a saída sem modificação, isso seria esteticamente aceitável, mas não consegui encontrar um. Eu poderia escrever um personalizado, mas reduziria a portabilidade.)
Finalmente, a última parte da resposta da DigitalRoss no StackOverflow funciona bem para adicionar comentários na mesma linha, mas eu prefiro fortemente comentários em linhas separadas. Caso contrário, quando as linhas tiverem comprimentos muito variados, a legibilidade será reduzida:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
Estou procurando respostas que preservem a legibilidade e minimizem a complexidade, ou então, algum histórico sobre por que o que estou procurando é inviável.
i++; // increment i by one
. Eu sugiro que você leia "os elementos de estilo de programação"Respostas:
Que tal agora?
(A barra invertida precisa ser usada como o último caractere nessas linhas.) Não tenho certeza sobre a portabilidade dessa abordagem, mas com certeza funciona com a corrente
bash
.fonte