Testin Daha Modern Bir Versiyonu
son sürümleri darbe için geliştirilmiş bir değiştirme işlevi gören bir bileşik komut içerir. test. Aşağıdaki sözdizimini kullanır:
[[ ifade ]]
nerede, gibi test, ifade doğru veya yanlış sonuç olarak değerlendirilen bir ifadedir. NS [[]] komut çok benzer test (tüm ifadelerini destekler), ancak
önemli bir yeni dize ifadesi ekler:
string1 =~ regex
hangisi doğruysa döner string1 genişletilmiş normal ifadeyle eşleştirilir regex. Bu, veri doğrulama gibi görevleri gerçekleştirmek için birçok olanak sunar. Tamsayı ifadelerine ilişkin önceki örneğimizde, sabit INT bir tamsayı dışında herhangi bir şey içeriyordu. Komut dosyasının, sabitin bir tamsayı içerdiğini doğrulamak için bir yola ihtiyacı var. kullanma [[]] ile =~ string ifade operatörü, betiği şu şekilde geliştirebiliriz:
#! / Bin / bash
# test-integer2: bir tamsayının değerini değerlendirin.
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; sonra
eğer [ $INT -eq 0 ]; sonra yankı "INT sıfırdır."
başka
eğer [ $INT -lt 0 ]; sonra echo "INT negatiftir."
başka
echo "INT pozitif."
fi
if [ $((INT % 2)) -eq 0 ]; sonra echo "INT çifttir."
başka
echo "INT garip."
fi
fi
başka
echo "INT bir tam sayı değil." >&2 çıkış 1
fi
#! / Bin / bash
# test-integer2: bir tamsayının değerini değerlendirin.
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; sonra
eğer [ $INT -eq 0 ]; sonra yankı "INT sıfırdır."
başka
eğer [ $INT -lt 0 ]; sonra echo "INT negatiftir."
başka
echo "INT pozitif."
fi
if [ $((INT % 2)) -eq 0 ]; sonra echo "INT çifttir."
başka
echo "INT garip."
fi
fi
başka
echo "INT bir tam sayı değil." >&2 çıkış 1
fi
Normal ifadeyi uygulayarak değerini sınırlayabiliriz. INT yalnızca isteğe bağlı bir eksi işaretiyle başlayan ve ardından bir veya daha fazla sayı gelen dizelere. Bu ifade aynı zamanda boş değerler olasılığını da ortadan kaldırır.
Eklenen bir diğer özellik [[]] olduğu == operatör, yol adı genişletmesinin yaptığı gibi desen eşleştirmeyi destekler. Örneğin:
[ben@linuxbox ~]$ DOSYA=foo.bar
[ben@linuxbox ~]$ DOSYA=foo.bar
Testin Daha Modern Bir Versiyonu
[ben@linuxbox ~]$ if [[ $DOSYA == foo.* ]]; sonra
> echo "$FILE 'foo.*' kalıbıyla eşleşiyor"
> fi
foo.bar 'foo.*' kalıbıyla eşleşir
[ben@linuxbox ~]$ if [[ $DOSYA == foo.* ]]; sonra
> echo "$FILE 'foo.*' kalıbıyla eşleşiyor"
> fi
foo.bar 'foo.*' kalıbıyla eşleşir
Bu yapar [[]] dosya ve yol adlarını değerlendirmek için kullanışlıdır.
 
 
 Dökümanlar
 Dökümanlar