我有一个脚本,它创建文件的哈希值,将其写入 vars.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//./_}"