2016-08-11 2 views
1

* .cファイルでコーディングスタイルエラーを見つけるために、シェル内でregexpを実行しています。 実は私はこのような何かやってる:変数シェル内の正規表現

# Operator < 
if [[ "$1" =~ ([^ ]<|<[^ =$]) ]]; then 
    warn "$wmsg_space_operator (operator: <)" 
fi 

をしかし、私はこのようにそれをしたい:

# Operator < 
regexpOp=([^ ]<|<[^ =$]) 
if [[ "$1" =~ $regexpOp ]]; then 
    warn "$wmsg_space_operator (operator: <)" 
fi 

私はどのように行うことができますか?

答えて

1

なぜ保証されている引用符

regexpOp='([^ ]<|<[^ =$])' 

と残りの部分でregexpOpを入れて?

あなたのregex文字列にはスペースが含まれ、スペースは別のコマンドとしてカウントされます。

1

割り当てを引用する必要があります。具体的には、空白を指定する必要があります。

# Operator < 
regexpOp="([^ ]<|<[^ =$])" 
if [[ "$1" =~ $regexpOp ]]; then 
    warn "$wmsg_space_operator (operator: <)" 
fi