Bir Horoskop RSS betiği Unix / Linux projesine giriş olarak yazıyorum ve Profesörüm dersten sonra kalmayı başarabildiğim bir zamanda çözemedi. Gerçek tarihleri kontrol etmek için nasıl kullanacağımı anlayamadığım için, kullanıcı girişinin MMDD formatında standart sayılar olmasını sağlayarak temel aritmetiği deneyeceğim. Ona göre senaryo, tamsayı yerine sekizli kod olarak girdi okuyor gibi görünüyor. İşte senaryo örneği:
elif [ "$olddate" -gt 1121 ] && [ "$olddate" -lt 1131 ] || [ "$olddate" -gt 1200 ] && [ "$olddate" -lt 1222 ]
then
echo "You are Sagittarius"
exit
elif [ "$olddate" -gt 1221 ] && [ "$olddate" -lt 1232 ] || [ "$olddate" -gt 0100 ] && [ "$olddate" -lt 0120 ]
then
echo "You are Capricorn"
exit
Bu çıplak kemikler, RSS bölümünü çıkardım. "olddate" okuma istemimden beklenen girdi. 1121 ila 1131, 1200 ila 1222 ve 0100 ila 0120 çalışırken, 1221 ila 1232 arasında hiçbir şey yapılmaz. Oğlak için çalışmış 0 önde 113 olmadan bu sorunun olduğunu anladı. Ben de sadece Koç'u vermesi gereken 0323'ün (-gt 0320 && -lt 0332) bana Kova (tarihleri -gt 0119 && -lt 0132 || -gt 0200 && -lt 0219) olarak verdiği bir problemle karşılaştım. 0417 çalışmıyorsa (Koç için diğer tarih aralığı, -gt 0400 && -lt 0420).
BASH'in girdiyi gerçek sayılar olarak yorumlaması için ne yapmalıyım? Girdi olarak "userdate" ifadesini beklemek için okuma istemini değiştirmeyi ve ardından
olddate=`printf '%d\n' "$userdate"`
ama işe yaramadı. Bu konuda bana yardımcı olabilecek herkese şimdiden teşekkürler!
test
açık sayısal işleçler vardır.