2013-05-09 74 views
0

我已經下載了一個腳本文件,下載蒸汽機,依賴關係然後安裝它們。我正試圖瞭解哪些代碼正在做。我已經理解了它的某些部分,但無法理解一些功能。有人能解釋我這些功能在做什麼嗎?解釋蒸汽腳本功能

download() { 
    local url="$1" 
    local filename="$(basename "$url")" 

    if [ ! -f "$filename" ]; then 
     wget -c "$url" -O "$filename.part" 
     mv "$filename.part" "$filename" 
    fi 
} 

package() { 
    local url="$1" 
    local target="$2" 

    download "$url" 

    mkdir -p "$target" 
    ar p "$(basename "$url")" data.tar.gz | tar xz -C "$target" 
} 

STEAM_DEB_URL="http://media.steampowered.com/client/installer/steam.deb" 
UBUNTU_DEB_URL="http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.15-0ubuntu10.2_i386.deb" 

回答

0

下載函數將URL作爲其參數,並將其作爲變量存儲爲名爲url。 $(basename「$ url」)以url變量作爲參數執行命令基本名稱,並且該值將返回並存儲到文件名中。基本上它試圖確定URL的文件名部分。因此,如果您的網址爲www.example.com/foo.txt,則文件名將只與foo.txt相同。if塊會嘗試查看文件是否已存在於當前工作目錄中。如果沒有,則使用curl下載它。

包函數帶有兩個參數url和target。傳遞給已經描述的下載功能的網址。文件下載後,它會創建目標目錄並提取下載內容。

由於下載的文件是.deb格式,它首先必須使用「ar」命令。 .deb文件格式通常是一個名爲data.tar.gz的文件,它是包的「肉」。由於data.tar.gz文件也是壓縮的,因此它也需要被提取。 Tar處理這些文件,但首先它會更改爲目標目錄,以便文件最終位於正確的位置。