循环调用trim_galore处理测序文件报错‘--length: command not found’求助
问题描述
目录下有80个样本共160个配对测序文件,文件名以_1.fq.gz和_2.fq.gz结尾,示例:
G49Am24_1_100_a100_1.fq.gz G49Am24_1_100_a100_2.fq.gz
单独处理单对文件时,trim_galore命令运行正常:
trim_galore --length 40 --quality 25 --paired ./G49Am24_1_100_a100_1.fq.gz ./G49Am24_1_100_a100_2.fq.gz
但批量处理的循环代码执行时,反复报错--length: command not found,循环代码如下:
for infile in *_1.fq.gz ; do base=$(basename ${infile} _1.fq.gz) > trim_galore --length 40 --quality 25 --paired ${infile} ${base}_2.fq.gz done
解决方法
错误根源是变量赋值语句后多余的>符号:这个符号被bash解析为输出重定向,导致它把trim_galore当作要重定向的文件,而把--length当成了新的命令执行,自然会报“命令未找到”。
修正后的循环代码如下:
for infile in *_1.fq.gz ; do base=$(basename "${infile}" _1.fq.gz) trim_galore --length 40 --quality 25 --paired "${infile}" "${base}_2.fq.gz" done
要点说明:
- 把变量赋值和
trim_galore命令分成两行,逻辑更清晰,避免语法混淆 - 给变量加上双引号
"",防止文件名中包含空格等特殊字符时出现解析错误
内容的提问来源于stack exchange,提问作者Kelli Anderson
相关产品推荐
相关产品推荐

