我是脚本新手,所以我需要帮助。
我正在运行一个基于四个独立测试(--max-maf)的程序,该测试需要输入文件名和输出文件名。下面只是对该程序的一般描述。文件名是我在下一个代码块中详细描述的输入。
epacts group --groupf filename.grp --vcf filename.vcf.gz --ped filename.ped --max-maf 0.05 --kin filename --test emmaxCMC --out BcA/filename-CMC-0.05
epacts group --groupf filename.grp --vcf filename.vcf.gz --ped filename.ped --max-maf 0.03 --kin filename --test emmaxCMC --out BcA/filename-CMC-0.03
epacts group --groupf filename.grp --vcf filename.vcf.gz --ped filename.ped --max-maf 0.02 --kin filename --test emmaxCMC --out BcA/filename-CMC-0.02
epacts group --groupf filename.grp --vcf filename.vcf.gz --ped filename.ped --max-maf 0.01 --kin filename --test emmaxCMC --out BcA/filename-CMC-0.01
我在同一个目录中有几个具有相同基本名称的输入文件,但一个文件 (CDES_MyopV1.ped) 具有相同的基本名称,但后面有一个唯一标识符。该文件将在 --ped 命令之后执行 (--ped CDES_MyopV1.ped)
CDES-genes.grp
CDES.vcf.gz
CDES_MyopV1.ped
CDES.kinf
我尝试通过根据基本名称“CDES”查找上面列出的输入文件来创建一个执行程序的脚本,但是我意识到我需要 .ped 文件来包含基本名称和其后的唯一标识符(CDES_MyopV1)此外,对于每个输出文件,我希望将 CDES_MyopV1 连接到输出文件名。
这是我迄今为止尝试过的:
declare -a files=("CDES")
for element in ${files[@]}
do
epacts group --groupf $element-genes.grp --vcf $element.vcf.gz --ped $element.ped --max-maf 0.05 --kin $element.kinf --test emmaxCMC --out BcA/$element-CMC-0.05
epacts group --groupf $element-genes.grp --vcf $element.vcf.gz --ped $element.ped --max-maf 0.03 --kin $element.kinf --test emmaxCMC --out BcA/$element-CMC-0.01
epacts group --groupf $element-genes.grp --vcf $element.vcf.gz --ped $element.ped --max-maf 0.02 --kin $element.kinf --test emmaxCMC --out BcA/$element-CMC-0.05
epacts group --groupf $element-genes.grp --vcf $element.vcf.gz --ped $element.ped --max-maf 0.01 --kin $element.kinf --test emmaxCMC --out BcA/$element-CMC-0.01
done
理想情况下,这就是我希望脚本执行的操作。
epacts group --groupf CDES-genes.grp --vcf CDES.vcf.gz --ped CDES_MyopV1.ped --max-maf 0.05 --kin CDES.kinf --test emmaxCMC --out BcA/CDES_MyopV1-CMC-0.05
epacts group --groupf CDES-genes.grp --vcf CDES.vcf.gz --ped CDES_MyopV1.ped --max-maf 0.03 --kin CDES.kinf --test emmaxCMC --out BcA/CDES_MyopV1-CMC-0.03
epacts group --groupf CDES-genes.grp --vcf CDES.vcf.gz --ped CDES_MyopV1.ped --max-maf 0.02 --kin CDES.kinf --test emmaxCMC --out BcA/CDES_MyopV1-CMC-0.02
epacts group --groupf CDES-genes.grp --vcf CDES.vcf.gz --ped CDES_MyopV1.ped --max-maf 0.01 --kin CDES.kinf --test emmaxCMC --out BcA/CDES_MyopV1-CMC-0.01
我建议你从
.ped
文件的全名开始,然后通过shell参数扩展机制提取需要的部分,像这样:变量
uniquename
将是基本名称“CDES”和唯一后缀“_MyopV1”的组合,而变量element
将是单独的基本名称。如果这样做,您可以轻松地将硬编码数组替换为
files
目录中实际.ped
文件的列表,如下所示:或者使用您作为参数传递给脚本的文件列表,如下所示:
然后您可以通过通配符扩展将其提供给您的脚本。
请注意,我已系统地将变量名称括在大括号中,建议这样做以避免可能的语法歧义。我还用双引号将所有文件名括起来,以避免文件名包含空格字符时出现问题。