Normal ifadenizin listenizdeki öğeleri kontrol etmenin en iyi (veya doğru?) Yolu olduğunu sanmıyorum (ipucu: diğer koşullardan bağımsız olarak uzunluğu kontrol ediyorum), ancak Bash kullanmaktan ilgili soruyu cevaplamak için: grep -Eq
dönüş değeri, örneğin kullanın: Bash 3'te Alternatif
if echo "$candidate_password" | grep -Eq "$strong_pw_regex"; then
echo strong
else
echo weak
fi
ve daha sonra =~
operatörünü kullanabilirsiniz:
if [[ "$candidate_password" =~ "$strong_pw_regex" ]]; then
…
fi
ait regexp'in sözdizimi grep -E
veya Bash, örneğinizde kullandığınız her şeyi desteklemeyebilir, ancak gereksinimlerinizi de kontrol etmek mümkündür. Fakat meraklı ifadeler istiyorsanız, muhtemelen Bash için Ruby ya da Perl gibi bir şey değiştirmeniz gerekecektir.
Düzenli ifadenizi değiştirmek için, Bash ile uzunluğu kontrol edin (${#candidate_password}
, candidate_password
değişkenindeki dizenin uzunluğunu verir) ve daha sonra lookahead olmadan basit bir sözdizimi kullanın. Basitlik için her üç koşulu ayrı düzenli ifadelerle bile kontrol edebilirsiniz. -E
seçeneğiyle
'yankı-weak' yeni bir etiket olmalıdır ... yorum için İt's-hep-Cuma-in-iceland' – beggs
teşekkür' yanında gitmek ama benim yaptığım gibi bu bash yapılması gereken etmek Başka şeyler yapan bir betik. – Debianuser
Açıkçası, 'grep' çağrısına benzer bir sorun değilse, Bash komut dosyanızdan 'ruby' veya 'perl' diyebilirsiniz. Ya da saf Bash'i kastediyorsanız, '= ~' kullanın (Bash 3.x minimumunu kabul edebileceğinizi varsayarak), ancak normal ifadenizi (grep' için de aynı) değiştirmeniz gerekecektir. – Arkku