Если вам требуется поддержка широкого спектра систем - от старых установок (которые с большей вероятностью будут поддерживать wget
) до будущих (которые с большей вероятностью будут поддерживать curl
), вам действительно следует поддерживать обе системы.
Это можно сделать с помощью функции оболочки, которая проверяет, какой инструмент доступен:
# 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, лучше всего задавать отдельно, помечая для соответствующего сообщества).