You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本遍历_1/_2.fastq.gz文件失败,请求排查修复

问题分析与修正方案

原脚本存在的问题

  • 循环逻辑错误:遍历所有.fastq.gz文件后,用find在单个文件路径下搜索配对文件,这完全无效——find用于搜索目录,而非单个文件。
  • 变量拼写错误:samleID是sampleID的笔误,会导致样本名提取失败。
  • 样本名处理不当:直接提取文件名会保留.fastq.gz后缀和_1/_2标识,无法得到干净的样本名。
  • 未做文件存在性检查:若某样本缺失R2文件,salmon命令会直接报错中断循环。

修正后的脚本

fastq_dir="../script"
# 遍历所有_1.fastq.gz文件,每个对应一个样本的配对读段1
for r1 in "${fastq_dir}"/*_1.fastq.gz
do
    # 从R1路径推导对应R2的路径
    r2="${r1/_1.fastq.gz/_2.fastq.gz}"
    
    # 检查R2文件是否存在,不存在则跳过当前样本
    if [ ! -f "$r2" ]; then
        echo "警告:未找到$r1对应的R2文件$r2,跳过该样本"
        continue
    fi
    
    # 提取干净的样本名:去掉路径和_1.fastq.gz后缀
    sample_name=$(basename "$r1" _1.fastq.gz)
    
    # 确保输出目录存在(不存在则创建)
    mkdir -p salmon_quant/"$sample_name"
    
    # 执行salmon定量分析
    salmon quant -i salmon_index -l A -1 "$r1" -2 "$r2" --validateMappings -o salmon_quant/"$sample_name"/
done

关键修正说明

  • 直接遍历*_1.fastq.gz文件:确保每个循环迭代对应一个完整样本的R1读段,避免重复处理。
  • 字符串替换生成R2路径:比find更高效,且能精准匹配配对文件。
  • 添加文件存在性检查:避免因缺失文件导致脚本中断,同时给出明确提示。
  • 精准提取样本名:利用basename的后缀移除功能,直接得到无冗余标识的样本名。
  • 预创建输出目录:用mkdir -p确保salmon有写入目录,避免因目录不存在报错。

内容的提问来源于stack exchange,提问作者Ahmed Salah Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 01:07:35