我有一行 bash:
SAMPLES=$(for f in `find $IN -iname *fastq.gz `; do basename $f | cut -c 1-4; done | sort | uniq)
我试图将其分成多行,以便对每行进行注释。我想要类似下面的内容,在每行或行后添加注释:
SAMPLES=
#comment
$(for f in `find $IN -iname *fastq.gz `; \
#comment
do basename $f |
#comment
cut -c 1-4; done |
#comment
sort |
#comment
uniq)
答案1
你需要这样做:
SAMPLES=$(for f in `find $IN -iname *fastq.gz `; #comment \
do basename $f | #comment \
cut -c 1-4; done | #comment \
sort | #comment \
uniq)
这是有效的,因为注释在换行符处结束\
,并在下一行的开头解析命令
答案2
你可以使用你想要的语法,但对于第一行。如果你写
SAMPLE=
然后变量 SAMPLE 被设置为空字符串。但是如果你写
SAMPLE=$(
然后解释器会查找结束语句的右括号。也就是说,你可以这样写:
SAMPLES=$(
#comment
for f in $(find . -name *fastq.gz) ;
#comment
do
# comment
basename $f |
#comment
cut -c 1-4
done |
#comment
sort |
uniq)
(顺便说一句,您可以嵌套$()
以避免使用较旧的反引号语法。)