altere seu
fileVarName="${fileVarName/./_}"
para fazer todos os pontos
fileVarName="${fileVarName//./_}"
Eu tenho um script que cria um hash de um arquivo, grava-o em vars.txt e verifica essa variável na próxima vez em que o script é executado para determinar se o arquivo foi alterado.
Aqui está o script e vars.txt (pastebin)
Quando executo o script, chamo a variável com source /path/to/file
Isso agora me dá o seguinte erro quando o arquivo é analisado:
/opt/scripts/AutoCommit/vars.txt: line 2: etchttpdconf_dvhost.conf=925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5 /etc/httpd/conf.d/vhost.conf: No such file or directory
Além disso, quando o arquivo é alterado, sed
não está substituindo a linha, mas adicionando uma linha adicional por baixo. Não havia feito isso no passado.
Você recebe um arquivo que acaba assim. Até recentemente, isso não aconteceu, então suspeito que ambos tenham sido causados pelo mesmo problema .
Aqui está uma versão simplificada do script, onde acredito que o problema possa estar.
O .
(ponto) não é um caractere válido em um nome de variável, conforme definido em vars.txt
:
gitinstalled="1" etchttpdconf_dvhost.conf="925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5 /etc/httpd/conf.d/vhost.conf" etchttpdconf_dvhost.conf="925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5 /etc/httpd/conf.d/vhost.conf"
Tags bash centos scripting shell-script