Closed erenhatirnaz closed 5 years ago
Sorun bash içerisindeki bul ve değiştir sisteminin aradığı ifadeyi bulduğu gibi değiştirmesinden kaynaklanıyor. Yani kare
ifadesi varsa onu önüne arkasına bakmadan 2
ifadesi ile değiştiriyor. Sadece bu kelime varsa değiştir demek için regex'deki ^ (satır başı) ve $ (satır sonu) ifadelerini kullandım fakat ${} içerisinde regex kullanamıyormuşuz. Çözüm yolu olarak bunu buldum:
FORMAT=$(echo "$FORMAT" | sed -e 's/^kare$/2/g')
Böylece sadece "kare" ifadesi varsa bunu 2
ile değiştirecek, 123kare123
gibi ifadeler kabul edilmeyecek ve kullanıcıya doğru hata mesajı gösterilecek.
Kullanıcıdan alıp sonra betik içerisinde değiştirerek kullandığım bazı argümanlarda yanlış veri girince, hata mesajı kullanıcının girdiği değer yerine değiştirilmiş değeri gösteriyor. Hatalı durumu simüle etmek için:
Gözüktüğü gibi kullanıcı
dikey2
yazmasına rağmen hata mesajı kullanıcıdan gelen değerin4123
olduğunu iddia ediyor. Hata mesajının kullanıcının yazdığı değeri doğru göstermesi gerek.Sorunlu satırlar: https://github.com/erenhatirnaz/mgm-radar/blob/f8eca695719377f6c956a7be88d062555ab69885/mgm-radar.sh#L340-L341 https://github.com/erenhatirnaz/mgm-radar/blob/f8eca695719377f6c956a7be88d062555ab69885/mgm-radar.sh#L352-L354