オプションを有効にするには、次のものを使用できますsetopt
。
setopt extended_glob
オプションが現在有効になっていることをどのように確認できますか?
答え1
では、有効なオプションの表示と有効になっていないオプションの表示をzsh
使用できます。setopt
unsetopt
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
でbash
使用できますshopt -p
。
答え2
ちょうど使用:
if [[ -o extended_glob ]]; then
echo it is set
fi
これはbash
設定されているオプションにのみ適用され、set -o
設定されているオプションには適用されませんshopt
。有効または設定できるzsh
オプションセットは1つだけです。setopt
set -o
bash
(または他のPOSIXシェル)と同様に、現在のオプション設定を実行または表示することもset -o
できset +o
ます。
答え3
これzsh/parameter
モジュールは基本的な展開の一部であり、連想配列を提供します。options
どのオプションがオンになっているかを示します。
if [[ $options[extended_glob] = on ]]; then …
単一文字のエイリアスを持つオプションの場合(そうではありませんextended_glob
)、次のことも確認できます。$-
。
どのオプションが有効になっているかをテストすることはほとんど役に立ちません。コードのオプションを有効または無効にする必要がある場合は、コードを関数に入れて設定してください。local_options
オプション。電話してもいいemulate
デフォルト状態にリセットオプションが組み込まれています。
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
答え4
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } <optname>
<optname>
フォローhttps://zsh.sourceforge.io/Doc/Release/Options.html
例:
() {[[ -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>