2016-06-15 16 views
0

我對bash腳本編程頗爲陌生。在目錄中循環並按特定順序在軟件包上運行easy_install

我有一個bash腳本,必須脫機運行(應該沒有互聯網工作)。該腳本解壓縮一個xyz.tar.gz文件,並在一堆python包(它們本身就是.tar.gz文件)上執行easy_install。 4包我安裝有:

multi_key_dict-2.0.3.tar.gz 
pbr-1.10.0.tar.gz 
python-jenkins-0.4.12.tar.gz 
six-1.10.0.tar.gz 

的問題是,六1.10.0.tar.gz是蟒蛇,詹金斯包的相關性。當我運行腳本時,它會嘗試按字母順序安裝這些軟件包;因此試圖在六點之前安裝python-jenkins。由於沒有互聯網來獲取相關軟件包,因此失敗。 (請注意,我的要求是我使用easy_install而不是pip,主機應該離線工作)

如何編寫腳本以便在安裝python-jenkins之前安裝其餘3個軟件包?我不想手動編寫4行來安裝每個軟件包。

回答

0

像這樣的東西可能會奏效:

for package in m* pb* s* py*; do 
    easy_install "$package" 
done 

上述假定您在包含這四個文件的目錄,並easy_install需要一個文件名作爲第一個也是唯一一個參數。

基本上變量package將順序分配:

multy_key_dict-2.0.3.tar.gz 
pbr-1.10.0.tar.gz 
six-1.10.0.tar.gz 
python-jenkins-0.4.12.tar.gz 

我希望你得到這個for循環的地步。

+0

如果只有4個軟件包,我會親自使用展開的版本(在一個序列中使用四個'easy_install'命令) - 清晰可讀。 – SuperSaiyan

+0

@SuperSaiyan真的,我會正確地做同樣的事情。但我不知道'easy_install'是如何工作的,OP顯式說:'我不想手動編寫4行來安裝每個包。' – andlrc

+0

感謝@andlrc的答案。有沒有一種方法可以指導我的腳本'最後安裝這個特定的軟件包;爲他人訂單無所謂'? – Alok