Bash Script: Nenhum arquivo ou diretório ao definir variável via source vars.txt

1

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.

    
por AirCombat 08.10.2015 / 13:22

2 respostas

1

altere seu

fileVarName="${fileVarName/./_}"

para fazer todos os pontos

fileVarName="${fileVarName//./_}"
    
por 08.10.2015 / 14:00
2

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"
    
por 08.10.2015 / 13:55