繁体   English   中英

Bash脚本:通过源vars.txt定义变量时,没有这样的文件或目录

[英]Bash Script: No such file or directory when defining variable via source vars.txt

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

这是脚本vars.txt (pastebin)

当我运行脚本时,我使用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现在不会替换该行,而是在下面添加了另一行。 它过去没有这样做。

您得到的文件最终像这样。 直到最近这还没有发生,所以我怀疑它们都是由同一问题引起的。

这是该脚本的精简版本,我认为可能是问题所在。

问题似乎是您的文件名包含多个点。 生成变量名时,只有第一个用下划线代替。 在变量名中包含一个点会导致您收到错误的错误消息,但实际上只是语法错误。

要替换Bash的“参数扩展”中某个模式的所有出现,您必须在该模式之前加上/ 因此,解决问题的方法是在脚本的第6行中使用以下代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM