我想编写一个可移植的shell脚本,并在各种Linux系统上运行,也许在其他Unix系统(* BSD,macOS)上运行。该shell脚本需要下载文件。
预计预安装了哪些下载工具?卷发还是Wget?
请注意,我对两者中的哪一个目前“更好”或更受欢迎不感兴趣。相反,我正在寻找使用尽可能少的代码的最佳长期解决方案。
答案 0 :(得分:1)
如果您需要支持广泛的系统-从旧的安装(更可能支持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下载脚本时可能会遇到的问题,最好在Python 2.5和未来的3.x版本之间的任何地方运行,并针对相应的社区进行标记。)