Şu anda, bir test fonksiyonunda hem standart bash testleri ( [[
) hem de önceden tanımlanmış eşleştiricilerin kullanılabileceği bir bash test çerçevesi yazıyorum . Eşleştiriciler '[[' için sarmalayıcılardır ve bir dönüş kodu döndürmenin yanı sıra, bekleneni söyleyen anlamlı bir mesaj ayarlayın.
Misal:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Dolayısıyla, bir eşleştirici kullanıldığında ve başarısız olduğunda, ancak o zaman bir error_message ayarlanır.
Şimdi, bir noktada, testlerin başarılı olup olmadığını test ediyorum. Başarılı olursa, kırmızı renkte başarısız olursa beklentiyi yeşil olarak yazdırırım.
Ayrıca, bir error_message kümesi olabilir, bu yüzden bir mesajın var olup olmadığını test ederim, yazdırırım ve sonra onu kaldırırım (çünkü aşağıdaki test bir ayarlamayabilir error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Şimdi sorum şu, değişkeni kaldırmak mı yoksa sadece '' olarak ayarlamak mı daha iyi?
error_message=''
Hangisi daha iyi? Gerçekten bir fark yaratıyor mu? Ya da belki mesajın ayarlandığını gösteren ek bir bayrağa sahip olmalı mıyım?
error_message
başka bir şeyle karşılaştırmazsanız , önemli olmadığını söyleyebilirim. Bununla birlikte, istediğinizi düşünüyorum[[ $error_message ]]
, aksi takdirde "error_message" değişmez dizesinin var olup olmadığını test ediyorsunuz.