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
cat
no 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
.