
Um eine Option zu aktivieren, können wir verwenden setopt
. Beispiel:
setopt extended_glob
Wie können wir überprüfen, ob eine Option derzeit aktiviert ist?
Antwort1
In zsh
können Sie verwenden, setopt
um aktivierte Optionen anzuzeigen und unsetopt
um anzuzeigen, welche nicht aktiviert sind:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
In bash
können Sie verwenden shopt -p
.
Antwort2
Benutz einfach:
if [[ -o extended_glob ]]; then
echo it is set
fi
Dies funktioniert auch in bash
, aber nur für die von festgelegten Optionen set -o
, nicht für die von festgelegten shopt
. hat nur einen Satz von Optionen, die entweder mit oder zsh
festgelegt werden können .setopt
set -o
Wie bei bash
(oder jeder anderen POSIX-Shell) können Sie auch set -o
oder verwenden set +o
, um die aktuellen Optionseinstellungen anzuzeigen.
Antwort3
Derzsh/parameter
Das Modul, das Teil der Standarddistribution ist, bietet ein assoziatives Arrayoptions
das angibt, welche Optionen aktiviert sind.
if [[ $options[extended_glob] = on ]]; then …
Für Optionen, die einen einstelligen Alias haben (was bei nicht der Fall ist extended_glob
), können Sie auch$-
.
Beachten Sie, dass es selten sinnvoll ist, zu testen, welche Optionen aktiviert sind. Wenn Sie eine Option in einem Codeabschnitt aktivieren oder deaktivieren müssen, fügen Sie diesen Code in eine Funktion ein und setzen Sie dielocal_options
Option. Sie können dieemulate
Integriert, um die Optionen auf einen Standardzustand zurückzusetzen.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
Antwort4
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } <optname>
Mit <optname>
vonhttps://zsh.sourceforge.io/Doc/Release/Options.html
Beispiele:
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } LOCAL_TRAPS
option <LOCAL_TRAPS> is off
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } localtraps
option <localtraps> is off
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } localtrap
no such option <localtrap>