2016-12-15 40 views
0

我有一個文件apt.list,它存儲了APT包名稱 - 每行一個包。 我用這個文件的內容,方式如下:當包名作爲

entries=`cat apt.list` 
for entry in $entries 
do 
    apt-get install $entry 
done 

,一切工作正常的情況除外,如

linux-headers-$(uname -r) 

我應該怎樣做才能讓含有$的項目被正確解釋?

回答

0

不要解析cat輸出,在文件周圍使用適當的循環來解析每行輸出。

#!/bin/bash 

while IFS= read -r line 
do 
    apt-get install "$line" 
done<apt.list 
+0

請注意,等一下!我會嘗試 –

+0

好吧,它被正確解析。只有一個小問題。它表示找不到包'linux-headers - $(uname -r)'。但是,當我直接輸入它時,它不起作用,而不讀取文件 –

+0

@DraganMarinic:'linux-headers - $(uname -r)'似乎不是有效的軟件包名稱。 '$(uname -r)'中的部分需要擴展爲某個值,因爲它在命令替換內部,因此它將是'linux-headers-13.14.1'(例如)。請重新檢查文件爲什麼沒有展開 – Inian