Как я могу наиболее удобно скачать через HTTP из сценария оболочки?Могу ли я положиться на curl или wget? - PullRequest
0 голосов
/ 03 октября 2018

Я хочу написать сценарий переносимой оболочки и работать на различных системах Linux, возможно, также на других системах Unix (* BSD, macOS).Этот сценарий оболочки должен загружать файлы.

Какой инструмент загрузки, как ожидается, будет доступен предварительно установленным по умолчанию?Curl или Wget?

Обратите внимание, что меня не интересует, какой из них в настоящее время "лучше" или более популярен.Вместо этого я ищу лучшее долгосрочное решение с как можно меньшим количеством кода.

1 Ответ

0 голосов
/ 04 октября 2018

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

...