[Çözüldü] 100 100'e Eşit Değil Hatası

Başlatan mimiksiz, 08 Nisan 2019 - 17:07:39

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mimiksiz

adb shell dumpsys battery | grep level: | awk -F ': ' '{print $2}' | sed -n 1'p'
çıktısı görünürde 100 döndürüyor ama if [ "$çıktı" != "100" ]; then echo "eşit değil; fi sonucu eşit değil çıkartıyor ve printf $çıktı|wc -m "5" karakter içeriyor sonucunu döndürürken elle girdiğim 100 sayısı printf 100|wc -m 3 döndürüyor.
Nasıl eşit olmuyor anlayamadım.
$çıktı değişkeninde ki görünmeyen fazladan 2 karakteri nasıl silebilirim?

Empat

Bash konusunda sizin bilgilerinizin çeyreğine bile sahip değilim. Ancak bir öneride bulunabilir, yol gösterebilirim.

Facebook'ta 200 000'den fazla üyeye sahip Linux adlı gruba ve diğer -ortalama 50 000 üyeli- başlığı içinde Linux geçen yabancı gruplara üye olup, İngilizce bir gönderi atarsanız sorunuzun yanıtını büyük olasılıkla kısa sürede alırsınız.

Eğer sorunuzun yanıtı sizin için önemliyse bu önerimi tekrar değerlendiriniz.
Everything for me is just Peace - Love - Coding. Also, as they say: I am a programmer, I have no life!

mhmtkrktr

Çıktıyı oluşturan bölüm için "column", "fold", "fmt" gibi düzenleyiciler kullanılmış olabilir. Bu da "awk -F" ile yaptığın kesme işlemin de, boş satır oluşmasına sebep oluyordur.
F="100"
echo ${#F}
3
............

F="100  "
echo ${#F}
5

Komuta bu boşluğu kaldıracak, eklemeler yapabilirsin ancak daha doğrusu, sayısal ifadeleri, sayısal kontrol argümanlarıyla yapmak olur.
( != ) yerine ( -ne ) gibi.
( != ) şeklinde değer, sayı değil karakter olarak algılanır. Boşluklar da karakter olarak görüldüğü için kontrol işlemi doğru yapılmamış olur.

if [[ $çıktı -ne 100 ]]; then echo "eşit değil"; else echo eşit ; fi

mimiksiz

@empat @mhmtkrktr yardımlarınız için teşekkür ederim. if [[ $çıktı -ne 100 ]]; then echo "eşit değil"; else echo eşit ; fi kodu sayesinde ^M kontrol+m karakterinin eklendiğini öğrendim, sed ile temizleyince sorun çözüldü. çıktı=$(printf $çıktı|sed -e "s/\r//g")