Bash 脚本:通过源 vars.txt 定义变量时没有此类文件或目录

Bash 脚本:通过源 vars.txt 定义变量时没有此类文件或目录

我有一个脚本,它创建文件的哈希值,将其写入 vars.txt,然后在下次运行脚本时检查该变量以确定文件是否已更改。

这是脚本变量.txt(糊盒)

当我运行脚本时,我使用以下命令调用变量source /path/to/file

现在,当解析文件时,出现以下错误:

/opt/scripts/AutoCommit/vars.txt: line 2: etchttpdconf_dvhost.conf=925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5  /etc/httpd/conf.d/vhost.conf: No such file or directory

最重要的是,当文件更改时,sed现在不会替换该行,而是在下面添加一行。过去它没有这样做过。

你得到一个最终的文件像这样。直到最近这种情况才发生,所以我怀疑它们都是由同一问题引起的。

这是脚本的精简版本,我认为问题可能出在其中。

答案1

(点.) 不是变量名称中的有效字符,如您的定义vars.txt

gitinstalled="1"
etchttpdconf_dvhost.conf="925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5  /etc/httpd/conf.d/vhost.conf"
etchttpdconf_dvhost.conf="925ec4d7bd0dc94c3710bcf5fb2c80f422806bb5  /etc/httpd/conf.d/vhost.conf"

答案2

改变你的

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

完成所有点

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

相关内容