2013-05-09 4 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 변수를 인수로 사용하여 basename 명령을 실행하며 값은 return이며 filename에 저장됩니다. 기본적으로 URL의 파일 이름 부분을 확인하려고합니다. 따라서 URL이 www.example.com/foo.txt 인 경우 filename은 foo.txt와 동일합니다. if 블록은 파일이 현재 작업 디렉토리에 이미 있는지 확인하려고합니다. 그렇지 않은 경우 컬을 사용하여 다운로드합니다.

패키지 함수는 url과 target의 두 인수를 취합니다. 이미 설명한 다운로드 기능으로 URL이 전달되었습니다. 파일을 다운로드 한 후 대상 디렉토리를 만들고 다운로드 한 내용을 추출합니다.

다운로드 된 파일이 .deb 형식이므로 "ar"명령을 먼저 사용해야합니다. .deb 파일 형식은 항상 패키지의 "고기"인 data.tar.gz라는 파일 안에 있습니다. data.tar.gz 파일도 압축되어 있으므로 추출해야합니다. Tar이 처리하지만 먼저 대상 디렉토리로 변경되므로 파일이 올바른 위치에 저장됩니다.