Ao criar scripts de shell usando pipelines e usar a barra invertida para continuar as linhas, quero inserir comentários em linhas separadas , de maneira robusta, legível e portátil.
Por exemplo, dado este comando multi-linha descomentado (roubado da @DigitalRoss pela sua clareza):
echo abc |
tr a-z A-Z |
sort |
uniq
... o abaixo é esteticamente mais próximo do que eu quero realizar, mas por razões óbvias, não funciona ... e sim, estou bem ciente de que isso não é algo que normalmente 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 , como segue:
Primeiro, a resposta de glenn jackman (adicionar argumentos a um array e depois executar o array) trabalha para um único comandos, mas não funciona para pipelining (e mesmo se o fizesse, adiciona complexidade que eu gostaria de evitar).
Em segundo lugar, a resposta do @Gilles aqui (que usa :
) também não parece funcionar com 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 eu não consegui encontrar um. Eu poderia escrever um personalizado , mas reduziria a portabilidade.)
Por fim, a última parte da resposta DigitalRoss 'no StackOverflow funciona bem para adicionar comentários na mesma linha, mas eu preferem strongmente 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 à procura de respostas que preservem a legibilidade e minimizem a complexidade, ou então alguma informação sobre o motivo pelo qual o que procuro é inviável.