簡體   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