if
私のステートメントには正規表現とワイルドカードを使用しています。
例:
[[ "$exitfn" =~ ^[yY]*$ ]] && return
[[ "$exitfn" == "[yY]*" ]] && return
[[ "$exitfn" == "*$fs*" ]] && return
[[ "$exitfn" == *$fs* ]] && return
*$fs*"
しかし、引用または引用しないと、どのような問題が発生するのか本当に知りたいです*$fs*
。
=~
どのように使用するのだろうか==
。
答え1
右==
または!=
内部は次の[[...]]
とおりです。グローバルモード- そして文字列恒等演算子ではありません==
。!=
パターンマッチングオペレーター。
正規表現またはグローバルパターンで引用された部分は、リテラルテキストとして扱われます。
[[ "$exitfn" =~ ^[yY]*$ ]] && return
- 期待どおりに動作します。
[[ "$exitfn" == "[yY]*" ]] && return
- 変数がリテラルの場合にのみ返します。[yY]*
[[ "$exitfn" == "*$fs*" ]] && return
- 変数にアスタリスクの後にアスタリスクが続くものが含まれている場合にのみ
$fs
返されます。
[[ "$exitfn" == *$fs* ]] && return
- 期待どおりに動作するはずです。〜しない限り拡張は
$fs
glob式で一致させることができます。- たとえば、if then returnは、3文字以上を含む場合に
fs='???'
returnを実行します。$exitfn
- たとえば、if then returnは、3文字以上を含む場合に
長すぎます。- あなたが望む
[[ "$exitfn" == *"$fs"* ]] && return