清理/优化多变量脚本 - 下载不同的包

清理/优化多变量脚本 - 下载不同的包

我最近又重新开始学习新技能。其中一些是我尝试编写脚本。

首先,我想在一个脚本中提取多个包的最新版本。为此,我将版本号拉入变量,然后将该变量输入下载 URL。

所以下面的“作品”(你们中的一些人可能会认出这些软件包,并知道我在玩什么)......但我知道这不是“最佳”,而且我不满足于仅仅让某些东西起作用并且然后继续前进,当我知道我可能会做得更好时。

我认为我没有真正理解各种“while”选项是如何工作的,因为我需要其中的“break”来停止循环。我最初考虑嵌套“for”循环......但这对我来说似乎更丑陋。

或者也许我只是使用了错误的工具来完成我的任务......

while true; do
    crictlver=$(curl -s "https://api.github.com/repos/kubernetes-sigs/cri-tools/releases/latest" | jq -r .tag_name)
    runcver=$(curl -s "https://api.github.com/repos/opencontainers/runc/releases/latest" | jq -r .tag_name)
    cniver=$(curl -s "https://api.github.com/repos/containernetworking/plugins/releases/latest" | jq -r .tag_name)
    containerdver=$(curl -s "https://api.github.com/repos/containerd/containerd/releases/latest" | jq -r .tag_name)
    containerdvernum=$( curl -s "https://api.github.com/repos/containerd/containerd/releases/latest" | jq -r .tag_name | sed 's/^v//')
    k8sver=$(curl -s "https://storage.googleapis.com/kubernetes-release/release/stable.txt")
        wget --timestamping \
        https://github.com/kubernetes-sigs/cri-tools/releases/download/${crictlver}/crictl-${crictlver}-linux-amd64.tar.gz \
        https://github.com/opencontainers/runc/releases/download/${runcver}/runc.amd64 \
        https://github.com/containernetworking/plugins/releases/download/${cniver}/cni-plugins-linux-amd64-${cniver}.tgz \
        https://github.com/containerd/containerd/releases/download/${containerdver}/containerd-${containerdvernum}.linux-amd64.tar.gz \
        https://storage.googleapis.com/kubernetes-release/release/${k8sver}/bin/linux/amd64/kubectl \
        https://storage.googleapis.com/kubernetes-release/release/${k8sver}/bin/linux/amd64/kube-proxy \
        https://storage.googleapis.com/kubernetes-release/release/${k8sver}/bin/linux/amd64/kubelet;
    break
    done

任何有关如何压缩此问题的想法、建议或反馈都将受到赞赏。

相关内容