Wie kann man programmgesteuert überprüfen, ob „wget“ eine bestimmte Funktion unterstützt?

Wie kann man programmgesteuert überprüfen, ob „wget“ eine bestimmte Funktion unterstützt?

Gibt es eine Möglichkeit, programmgesteuert festzustellen, ob das aktuell installierte wget eine bestimmte Funktion unterstützt, beispielsweise IRI-Unterstützung?

Ich frage, weil ich diese Zeilen zu meinem hinzufügen möchte .wgetrc:

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

Dies macht wget jedoch unbrauchbar, wenn es die Einstellung nicht unterstützt local_encoding.

Daher möchte ich diese Einstellung nur bedingt konfigurieren, wenn wget die Funktion unterstützt.

In Vim ( .vimrcDateien) können Sie dies mit has()und tun exists():

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

Wie kann ich etwas Ähnliches für wget tun .wgetrc?

Antwort1

Sie können keine zusätzliche Logik in einbinden .wgetrc, daher scheint die Verwendung der Shell-Initialisierung, wie in der Antwort von enzotib beschrieben, die einzige Möglichkeit zu sein.

Darüber hinaus --helpkönnen Sie die Build-Konfiguration von GNUs wget und damit die aktivierten Funktionen über abrufen --version:

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

Falls Sie testen müssen, ob eine Funktion auch im wget von Busybox enthalten ist, müssen Sie wissen, dass es dies nicht unterstützt --versionund stattdessen „--help“ auf stderr ausgibt (nicht auf stdout wie das wget von GNU).

Antwort2

Wie wäre es damit in einem Shell-Initialisierungsskript?

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

verwandte Informationen