2016-08-11 3 views
1

Ich mache einige Regexp in Shell, um Codierungsstil Fehler in * .c-Dateien zu finden. Eigentlich mache ich so etwas wie dieses:Regexp in einer Variablen Shell

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

Aber ich will es so tun:

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

Wie kann ich tun?

Antwort

1

Put regexpOp in Anführungszeichen

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

und Rest

gewährleistet ist

Warum?

Ihre Regex-Zeichenfolge enthält Leerzeichen und alles, nachdem das Leerzeichen als ein anderer Befehl gezählt wird.

1

Sie müssen die Zuweisung speziell für das Leerzeichen angeben.

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