Zshのフック関数precmd
でのパターンマッチングに問題があります。私は以下を持っています:
precmd(){
local x='test'
if [ $x = '*test*' ]; then
echo 'hello'
fi
}
こんにちはこんにちは表示されません。私はこのコードを正常に動作する通常のzsh test.zsh
でテストし、precmd
の正規表現を使用せずに試し、うまく出力できるようにしました。なぜこれが期待どおりに機能しないのかについての手がかりはありますか?
$ zsh --version
zsh 4.3.11 RHEL
*test*
は有効な正規表現パターンではありません。 *
は繰り返し演算子であり、繰り返す必要があります。 .*test.*
が必要になる可能性は非常に高いですが、デフォルトではアンカーされていないため、正規表現では必要ありません。 test
を探すだけです
ただし、正規表現パターンを=
演算子と照合することはできません。=~
が必要です。
precmd () {
local x=test
if [[ $x =~ test ]]; then
echo 'hello'
fi
}