extended_glob
私はスクリプトではなくzshシェル関数を作成していますが、このオプションを有効にしたいと思います。ただし、関数は呼び出し元のコンテキストで実行されるため、その設定を混乱させたくありません。
私が望むのは、必要extended_glob
に応じて条件付きで有効にしてから、ユーザーオプションに戻すことです。 zshで特定のオプションが有効になっているかどうかを確認する方法はありますか?
答え1
あなたはそれを使用することができますlocal_options
オプション機能終了時の自動復元オプションです。これは、関数が何も実行しない場合にのみ適用されます。その他機能が完了した後も維持したいオプションの変更です。
したがって、次のように関数を作成できます。
do_something() {
setopt local_options extended_glob
⋮
}
関数が返された後でも他のオプションを保持したい場合は、options
連想配列を使用できます(zsh/parameter
基準寸法)さまざまなオプションを簡単に確認して操作できます。
do_something() {
local eg=$options[extended_glob]
setopt extended_glob
⋮
options[extended_glob]=$eg
}
インストールにこのモジュールがない場合は、次のものを使用できます。-o
テスト:
do_something() {
local eg=no
[[ -o extended_glob ]] && eg=
setopt extended_glob
⋮
setopt ${eg}extended_glob
}