代码之家  ›  专栏  ›  技术社区  ›  vog

如何通过HTTP从shell脚本最方便地下载?我能靠卷发还是雨衣?

  •  0
  • vog  · 技术社区  · 6 年前

    我想编写一个可移植的shell脚本,并在各种Linux系统上运行,可能还有其他UNIX系统(*bsd,macos)。这个shell脚本需要下载文件。

    在默认情况下,哪个下载工具更容易被预安装?卷曲还是WGET?

    请注意,我不感兴趣的是哪一个是目前“更好”或更受欢迎。相反,我在寻找最好的长期解决方案,尽量少用代码。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charles Duffy    6 年前

    如果您需要支持广泛的系统——从旧的安装(更可能支持 wget )对未来的(更有可能支持 curl )你真的应该两者都支持。

    这可以通过一个shell函数来完成,该函数检查哪些工具可用:

    # usage: retrieve_url url
    # results will be written to stdout
    retrieve_url() {
      if command -v curl >/dev/null 2>&1; then
        curl --fail "$@"
      elif command -v wget >/dev/null 2>&1; then
        wget -O- "$@"
      else
        echo "ERROR: Unable to find either curl or wget" >&2
        exit 1
      fi
    }
    

    考虑到这种一般的方法,应该可以将其扩展到支持其他工具——比如通过运行只运行标准库代码的嵌入式Python脚本。(构建适合嵌入的Python下载脚本时可能遇到的问题,在Python2.5和将来的3.x版本之间的任何地方都可以运行,最好单独询问,并为适当的社区做标记)。