我正在使用多个文件,我希望在进一步处理管道之前将其连接起来。通常我需要连接1到3个不同的文件对,但偶尔会有超过3对。我想用条件调整我的脚本,所以不要使用绝对数字,我只是传递一个条件(1或大于1个文件)来连接。我想知道是否有人能给我一个提示:
if [ $no_lanes -eq "1" ]; then
fq_align_1=$lane1_pair1
fq_align_2=$lane1_pair2
fi
if [ $no_lanes -eq "2" ]; then
cat $lane1_pair1 $lane2_pair1 > "$sampleID"_cat1.fq
cat $lane1_pair2 $lane2_pair2 > "$sampleID"_cat2.fq
fq_align_1="$sampleID"_cat1.fq
fq_align_2="$sampleID"_cat2.fq
fi
if [ $no_lanes -eq "3" ]; then
cat $lane1_pair1 $lane2_pair1 $lane3_pair1 > "$sampleID"_cat1.fq
cat $lane1_pair2 $lane2_pair2 $lane3_pair3 > "$sampleID"_cat2.fq
fq_align_1="$sampleID"_cat1.fq
fq_align_2="$sampleID"_cat2.fq
fi ....
答案 0 :(得分:0)
如果我正确理解了这个问题,那么一个简单的for
循环就可以了。
cat "$lane1_pair1" > "$sampleID"_cat1.fq
cat "$lane1_pair2" > "$sampleID"_cat2.fq
for (( n=2; n<=no_lanes; n++ )) {
pair1var=lane${n}_pair1
pair2var=lane${n}_pair2
cat "${!pair1var}" >> "$sampleID"_cat1.fq
cat "${!pair2var}" >> "$sampleID"_cat2.fq
}
fq_align_1="$sampleID"_cat1.fq
fq_align_2="$sampleID"_cat2.fq
编辑:修复了循环中的变量间接。出于某种原因,我在想我是在循环中制作文件名。然而,它实际上是在制作变量名。这样做可以使用$ {!...}扩展来轻微间接。