Eu vejo pelo menos um erro que poderia explicar o problema. Eu não revisei seu roteiro em detalhes. Veja o que esta linha faz:
for line in 'cat ${PARAMETERSFILE}'
- Pegue o valor da variável
PARAMETERSFILE. - Dividir esse valor no espaço em branco - isso resulta em uma única palavra se o valor contiver apenas caracteres "comuns".
- Execute expansão de nome de arquivo a.k.a. globting em cada palavra. Isso ainda resulta em uma única palavra se o valor da variável contiver apenas caracteres "comuns".
- Execute
catno arquivo especificado. - Leia a saída de
cat, pois esta é uma substituição de comando -
Dividir a saída do comando no espaço em branco. Desta vez, a string a dividir contém muitas novas linhas e alguns espaços; as palavras resultantes são
[help],backupdir="Backup,Home,Directory,",user="MySQL,Database,Username",… - Execute expansão de nome de arquivo a.k.a. globando em cada palavra.
Desta vez, algumas das palavras contêm caracteres curinga, pelo que serão interpretadas como um padrão glob. Se o padrão não corresponder a nenhum arquivo, ele será deixado como está. Se o padrão corresponder a pelo menos um arquivo, ele será substituído pela lista de arquivos correspondentes.
Uma string como [help] é um padrão glob que quatro possíveis correspondem a nomes de arquivos de um caractere: h , e , l , p . Portanto, se você executar o script em um diretório que não contenha nenhum arquivo por nenhum desses nomes, a palavra [help] permanecerá intacta, mas se, e. o diretório atual contém um arquivo chamado h , em seguida, [help] é substituído por h .
for line in … não divide a entrada em linhas. A maneira mais fácil de fazer isso é
while IFS= read -r line; do
…
done <"$PARAMETERSFILE"
IFS= read -r line lê exatamente uma linha, sem caractere diferente de nova linha sendo especial. Se você deseja remover espaços em branco iniciais e finais, remova IFS= . Se você quiser permitir que a barra invertida sirva como um caractere de continuação de linha (por exemplo, a barra invertida no final de uma linha ignora a nova linha seguinte), remova -r .