2015-05-21 31 views
5

Bir terminale [[ "0" =~ "^[0-9]+$" ]] && echo hello yaparsam, "merhaba" kelimesini görmeyi beklerdimBu basit bash regexi neden doğru değil?

Ancak hiçbir şey yazdırılmaz. Neyi yanlış yapıyorum?

+1

'[[ "0"= ~^[0-9] + $]]' –

+0

[Önerilen okuma] (http://mywiki.wooledge.org/BashGuide/Patterns # Regular_Expressions-1) –

cevap

5

Normal ifadenizde bulunan çift tırnak işaretlerini kaldırmanız gerekir. Yani, regex deseninizi çift tırnak içine almayın.

[[ "0" =~ ^[0-9]+$ ]] 
3

Olmalıdır:

aksi takdirde dize "olarak muamele edeceğiz ikinci bölümü çift tırnaklar değil Not olduğunu
[[ "0" =~ ^[0-9]+$ ]] && echo hello 

,^[0-9] + $ "ve bir regex değil. doğrulamak için, deneyin:

[[ "^[0-9]+$" =~ "^[0-9]+$" ]] && echo hello 
+2

Hafif tekniklik: sağ taraf hala düzenli bir ifade olarak ele alınır ('[[foo = ~" fo "]]' 'hala başarılı olur). Fark, normal ifadedeki * metakarakterlerin * tam olarak işleneceğidir. – chepner

+0

@chepner Doğru. Cevabımı düzenleyeceğim, teşekkürler! – Maroun