2016-04-08 25 views
2

Bash komut dosyam var ve işlevlerinden biri dizgenin uzunluğunu (parola) kontrol etmektir. Şifre, içinde özel karakterler olması için gereklidir. Dizenin uygun uzunlukta olup olmadığını kontrol etmek için $ {# VAR} kullanıyorum ancak sayımın kapalı olması için özel karakterler yorumlanıyor. Q7cS $ ZpR8eSi ve pNbTb $ IhkyUouDcZ gezisi it up (dolar işareti veya bir ve işareti ile bir şey) gibiBash komut dosyasında özel karakterler yazdırma

userpass="$1" 

if [[ "${#userpass}" -lt 8 ]]; then 
    echo 'Short Password' 
fi 

Strings: Aşağıda söz konusu kodudur. Ben de onun yerine wc -c kullanarak denedim ama bu işe yaramazsa aynı sorunu

+3

. '1 $' lı nasıl beslediğinizi değil, fakat cmd çizgisini kabul ettiğinizde, './myPswdChkr.sh 'Q7cS $ ZpR8eSi' yapmalısınız. Bir model kabuk için Pluse-uno Q. Muhtasar ve örnek girişi içerir! İyi şanslar. – shellter

+0

Öneri için teşekkürler, benim sorunum şifrenin değişken olmasıdır. Komut, bir şifrenin karmaşıklığını kontrol etmek ve kuruluşun şifre politikasına uyup uymadığına bakmak içindir. Kullanıcı ./myPswdChkr.sh kendi şifresini girecek ve komut dosyası, şifrenin uygun olup olmadığını söyleyecektir. –

+0

Sorunu yeniden oluşturamıyorum. 'UserPass = 'pNbTb $ IhkyUouDcZ'; echo $ {# userpass} 'Çıktı:' '16' – Cyrus

cevap

0

olsun:

./myPswdChkr.sh theirpa$sword 

argüman komut dosyasına geçirilen önce değişken yorumlanır olur çünkü. myPswdChkr.sh sadece theirpa'u alır.

./myPswdChkr.sh 'theirpa$sword' 

: @shellter söylediği gibi komut kullanırken, kullanıcıların şifreleri etrafında tek tırnak koyarsanız

, Yarar. . . ama gerçekte bu korkunç bir fikir çünkü daha sonra onların düz metin şifreleri komut geçmişinde saklanıyor.

Bunun yerine, sadece ./myPswdChkr.sh ardından komut dosyası içinde parolasını sor, değişkenler olmadan komut dosyasını çalıştırın: Eğer dizesine tek tırnak referanslarına sahip

echo -n 'PlsEntrYrPswd: ' 
read userpass 
if [[ "${#userpass}" -lt 8 ]]; then 
    echo 'Short Password' 
fi 
İlgili konular