Observe que o comando echo aqui mostra apenas um arquivo:
$ ls
file1.c file2.c file3.c file4.c
$ src=(*.c)
$ echo $src
file1.c
Se você quiser acessar todos os elementos de uma matriz, use um formulário mais complexo:
$ echo "${src[@]}"
file1.c file2.c file3.c file4.c
Assim, substitua:
for j in $SRC
com:
for j in "${SRC[@]}"
O formulário "${SRC[@]}"
é seguro para usar, mesmo que os nomes dos arquivos contenham espaços em branco ou outros caracteres difíceis
Notas adicionais
-
As melhores práticas são usar nomes de letras maiúsculas ou minúsculas para as variáveis do shell. O sistema usa nomes de maiúsculas para suas variáveis e você não deseja sobrescrever acidentalmente um deles. Portanto, é uma boa prática usar, por exemplo,
Src
ousrc
no lugar deSRC
. -
Como o steeldriver sugere, coloque este comando no começo do seu script:
shopt -s nullglob
Com o conjunto nulo, a matriz
SRC
estará vazia se não houver arquivos.c
.