[英]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.