O comando Forward=*R1*.at.fastq
define a variável Forward
como a string *R1*.at.fastq
(estrela, maiúscula R, dígito 1, estrela, ponto, minúscula A, etc.). Os caracteres curinga são expandidos apenas em contextos que permitem várias palavras; o tamanho da mão direita de uma atribuição de variável espera uma única palavra, portanto não ocorre nenhuma expansão de caractere curinga.
Em um comando como cat $Forward
, os curingas no valor de Forward
são expandidos. Quando uma variável é expandida fora de aspas duplas, seu valor é interpretado como uma lista delimitada por espaços em branco de padrões de curingas e, se algum padrão corresponder a um ou mais arquivos, ele será substituído pela lista de arquivos.
Em ${Forward/.at/.atqt}
, primeiro o valor da variável é pesquisado: *R1*.at.fastq
. Em seguida, a substituição de texto é aplicada a essa string, gerando *R1*.atqt.fastq
. O resultado é uma expansão de variável sem aspas, portanto, ela é interpretada como um padrão de caractere curinga. Mas *R1*.atqt.fastq
não corresponde a nenhum arquivo, portanto, não foi alterado.
Para expandir o curinga ao definir Forward
, você pode torná-lo uma matriz.
Forward=(*R1*.at.fastq)
Isso define Forward
como uma matriz de 1 elemento, sendo o elemento a string MA502_TAAGGCGA-TCGCAGG_L001_R1_001.at.fastq
. O padrão curinga é expandido para a lista de correspondências porque está em um contexto (os parênteses da atribuição de matriz), onde várias palavras são esperadas.
No bash, $Forward
quando Forward
é uma matriz é equivalente a ${Forward[0]}
- referenciar uma variável de matriz com a mesma sintaxe de uma variável escalar refere-se ao primeiro elemento da matriz. Então você pode deixar seu comando do awk inalterado.