面对使bash脚本工作的问题

时间:2015-12-24 07:10:26

标签: linux bash

我是Bash脚本新手。我的脚本的作用是访问提供的路径,然后对该路径中提供的数据应用一些软件(RTG - 实时基因组学)命令。但是,当我尝试从CLI执行bash时,它会给我以下错误

  

错误:输入文件路径无效

我在脚本中提供的路径是准确的。也就是说,在原始目录中,程序' RTG'我居住了相应的文件夹,如/data/reads/NA19240,并将*_1.fastq*_2.fastq个文件放在NA19240内。

这是脚本:

#!/bin/bash
for left_fastq in /data/reads/NA19240/*_1.fastq; do
     right_fastq=${left_fastq/_1.fastq/_2.fastq}
     lane_id=$(basename ${left_fastq/_1.fastq})
     rtg format -f fastq -q sanger -o ${lane_id} -l ${left_fastq} -r ${right_fastq} --sam-rg "@RG\tID:${lane_id}\tSM:NA19240\tPL:ILLUMINA"
done

我尝试了很多解决方法,但仍然无法绕过此错误。如果你们能帮助我解决这个问题,我将非常感激。谢谢

在bash脚本中添加set -aux以进行调试后,我现在得到以下输出

adnan@adnan-VirtualBox[Linux] ./format.sh                           
+ for left_fastq in '/data/reads/NA19240/*_1.fastq'
+ right_fastq='/data/reads/NA19240/*_2.fastq'
++ basename '/data/reads/NA19240/*'
+ lane_id='*'
+ ./rtg format -f fastq -q sanger -o '*' -l '/data/reads/NA19240/*_1.fastq' -r '/data/reads/NA19240/*_2.fastq' --sam-rg '@RG\tID:*\tSM:NA19240\tPL:ILLUMINA'
Error: File not found: "/data/reads/NA19240/*_1.fastq"
Error: File not found: "/data/reads/NA19240/*_2.fastq"
Error: There were 2 invalid input file paths

2 个答案:

答案 0 :(得分:0)

您需要在脚本中设置nullglob option,如下所示:

shopt -s nullglob

默认情况下,非匹配的globs会扩展为自身。通过设置set -aux得到的输出表明文件glob /data/reads/NA19240/*_1.fastq正在按字面解释。唯一的方法是,如果找不到文件,并且nullglob被禁用。

答案 1 :(得分:0)

  

在原始目录中,程序' RTG'居住,我有   相应地创建文件夹,如/data/reads/NA19240并放置两者   *_1.fastq内的*_2.fastqNA19240个文件。

所以你说,你的数据文件夹在原始目录(无论可能是什么),但是在脚本中你错误地将它们指定为根目录 (由领先的/) 由于您在原始目录中启动脚本,只需删除前导/并使用相对路径:

for left_fastq in data/reads/NA19240/*_1.fastq