Как проверить, поддерживает ли `wget` определенную функцию программно?

Как проверить, поддерживает ли `wget` определенную функцию программно?

Есть ли способ программно определить, поддерживает ли установленный wget заданную функцию, например, поддержку IRI?

Я спрашиваю, потому что хочу добавить эти строки в свой .wgetrc:

# Use UTF-8 as the default system encoding
local_encoding = UTF-8

Однако это делает wget непригодным для использования, если он не поддерживает эту local_encodingнастройку.

Поэтому я хотел бы настроить этот параметр условно, только если wget поддерживает эту функцию.

В Vim ( .vimrcфайлы) это можно сделать с помощью has()и exists():

if has("autocmd")
  " Define autocommands here
endif

Как я могу сделать что-то подобное для wget в .wgetrc?

решение1

Вы не можете включить в , дополнительную логику .wgetrc, поэтому использование инициализации оболочки, как описано в ответе enzotib, кажется единственной возможностью.

Помимо этого --help, вы можете получить конфигурацию сборки GNU wget и, следовательно, включенные функции через --version:

if wget --version | grep -q "+iri"; then 
    # modify ~/.wgetrc
fi

В случае, если вам нужно проверить, включена ли функция в wget от busybox, вам нужно знать, что он ее не поддерживает --versionи вместо этого выводит «--help» в stderr (а не в stdout, как wget от GNU).

решение2

А как насчет этого в каком-нибудь скрипте инициализации оболочки?

if wget --help | grep -q "local-encoding"; then 
    # modify ~/.wgetrc
fi

Связанный контент