.zshrcにextend_globを設定しました。
これは期待どおりに機能します。
[[ "value" = [a-z]* ]] && echo "globbed"
「globbed」を印刷します。
しかし、次はそうではありません。
foo=[a-z]*
[[ "value" = $foo ]] && echo "globbed"
何も印刷しません。
なぜそんなことですか?これを行うには、.zshrcに何を設定する必要がありますか?
ベストアンサー1
zsh
マニュアルで(ハイライト):
${~spec}
GLOB_SUBST
評価オプションをオンにしますspec
。倍増したら~
オフにしてください。このオプションを設定すると、拡張で生成された文字列はパターンとして解釈されます。ファイル名の拡張、ファイル名の生成など、可能なすべての場所=
条件でのand演算子の右側のようなパターンマッチングコンテキスト!=
。
これは、以下を使用する必要があることを意味します。
foo='[a-z]*'
[[ "value" = ${~foo} ]] && echo 'matched'
...変数の文字列をfoo
パターンとして使用することを明示的に許可します。
上記のコードは、matched
文字列が変数value
に格納されているパターンと一致するかどうかを印刷しますfoo
。ファイル名のグロービングはここには関係ありません。また、見ることができます以下はStéphaneのコメントです。。