[英]Bash Script: No such file or directory when defining variable via source vars.txt
我有一个脚本,该脚本创建文件的哈希,将其写入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
现在不会替换该行,而是在下面添加了另一行。 它过去没有这样做。
您得到的文件最终像这样。 直到最近这还没有发生,所以我怀疑它们都是由同一问题引起的。
问题似乎是您的文件名包含多个点。 生成变量名时,只有第一个用下划线代替。 在变量名中包含一个点会导致您收到错误的错误消息,但实际上只是语法错误。
要替换Bash的“参数扩展”中某个模式的所有出现,您必须在该模式之前加上/
。 因此,解决问题的方法是在脚本的第6行中使用以下代码:
fileVarName="${fileVarName//./_}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.