Eu suponho que o seu arquivo de entrada na verdade contém apenas um nome de arquivo por linha e se parece com isso:
SAE1903.barcode.in.R1.R1.fastq
SAE1903.barcode.in.R1.R2.fastq
SAE2000.barcode.in.R1.R1.fastq
...
Seu script lê cada linha em id
, portanto, após a primeira linha, o valor de id
é SAE1903.barcode.in.R1.R1.fastq
. Se você agora usar isso como $id.barcode.in.R1.R1.fastq
, a variável será substituída pelo valor e, em seguida, o restante da sequência ( .barcode.in.R1.R1.fastq
) será anexado. O que, claro, leva ao erro porque não existe um arquivo chamado SAE1903.barcode.in.R1.R1.fastq.barcode.in.R1.R1.fastq
.
Uma solução simples (que assume um arquivo com um número par de linhas) para superar isso poderia ser
#!/bin/bash
while read line1; do
read line2
cat "demuxR1/$line1" "demuxR2/$line2" > "alldemulti/${line1%%.*}.forwardread.fastq"
done < R1_new.txt
O ${line1%%.*}
será substituído por, e. SAE1903
, ou seja, a palavra antes do primeiro ponto na string lida no arquivo.