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"
4

1 回答 1

0

下载函数将 URL 作为其参数并将其存储为名为 url 的变量。$(basename "$url") 以 url 变量作为参数执行命令 basename,并将值返回并存储到文件名中。本质上,它试图确定 url 的文件名部分。因此,如果您的 URL 是 www.example.com/foo.txt 文件名将仅等于 foo.txt if 块尝试查看该文件是否已存在于您当前的工作目录中。如果没有,则使用 curl 下载它。

package 函数有两个参数,一个 url 和一个 target。传递给已经描述的下载函数的 url。下载文件后,它会创建目标目录并提取下载内容。

由于下载的文件是 .deb 格式,它首先必须使用“ar”命令。.deb 文件格式始终包含一个名为 data.tar.gz 的文件,它是包的“肉”。由于 data.tar.gz 文件也被压缩,它也需要被提取。Tar 会处理这个问题,但首先它会更改为目标目录,以便文件最终出现在正确的位置。

于 2013-05-09T03:58:52.957 回答