Como posso reestruturar essa linha de código bash para que eu possa comentar sobre cada instrução?

3

Eu tenho uma linha de bash:

SAMPLES=$(for f in 'find $IN -iname *fastq.gz '; do basename $f | cut -c 1-4; done | sort | uniq)

que estou tentando dividir em várias linhas com o objetivo de comentar cada uma delas. Eu gostaria de algo como o seguinte, com comentários em cada linha ou depois da linha:

SAMPLES=
#comment
$(for f in 'find $IN -iname *fastq.gz '; \ 
#comment
do basename $f |
#comment
cut -c 1-4; done | 
#comment
sort |
#comment
uniq)

Eu vi os dois isto , e isto , mas eles não têm a avaliação $() , ou o loop for, que está me jogando fora. Qualquer entrada apreciada.

    
por rivanov 16.06.2015 / 22:58

2 respostas

1

Você precisa fazer isso:

SAMPLES=$(for f in 'find $IN -iname *fastq.gz '; #comment \
do basename $f | #comment \
cut -c 1-4; done |  #comment \
sort | #comment \
uniq)

Isso funciona porque um comentário termina na nova linha \ e analisa o comando no início da próxima linha

    
por 16.06.2015 / 23:09
3

Você pode usar bastante a sintaxe desejada, mas para a primeira linha. Se você escreve

SAMPLE=

A variável SAMPLE é então definida para a string vazia. Mas se você escrever

SAMPLE=$(

Em seguida, o intérprete procura o parêntese de fechamento para finalizar a instrução. Ou seja, você pode escrever:

SAMPLES=$(
#comment
for f in $(find . -name *fastq.gz) ;
#comment
do
# comment
basename $f |
#comment
cut -c 1-4
done |
#comment
sort |
uniq)

(BTW, você pode aninhar $() para evitar a sintaxe mais antiga do backquote).

    
por 16.06.2015 / 23:11

Tags