erenhatirnaz / mgm-radar

Meteorological Radar Image Downloader from mgm.gov.tr (for Turkey)
GNU General Public License v3.0
9 stars 2 forks source link

Bazı argümanların hata mesajları yanlış çıktı üretiyor. #21

Closed erenhatirnaz closed 5 years ago

erenhatirnaz commented 5 years ago

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:

$ mgm-radar rapor -i 55 -f dikey2
mgm-radar: 4123: Geçersiz format.

Gözüktüğü gibi kullanıcı dikey2 yazmasına rağmen hata mesajı kullanıcıdan gelen değerin 4123 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

erenhatirnaz commented 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.