ฉันกำลังเขียนสคริปต์ Horoscope RSS เป็นบทนำสู่โปรเจ็กต์ Unix / Linux และพบปัญหาศาสตราจารย์ของฉันไม่สามารถแก้ไขได้ในเวลาที่ฉันสามารถอยู่หลังเลิกเรียนได้ เนื่องจากฉันไม่สามารถหาวิธีใช้วันที่ที่แท้จริงเป็นสิ่งที่ต้องตรวจสอบฉันคิดว่าฉันลองเลขคณิตพื้นฐานโดยให้ผู้ใช้ป้อนเป็นหมายเลขมาตรฐานในรูปแบบ MMDD ตามที่เขาพูดสคริปต์ดูเหมือนว่าจะอ่านอินพุตเป็นรหัสฐานแปดแทนจำนวนเต็ม นี่คือตัวอย่างของสคริปต์:
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
นี่คือกระดูกเปลือยฉันเอาส่วน RSS ออกไป "olddate" เป็นอินพุตที่คาดไว้จากพรอมต์การอ่านของฉัน ในขณะที่ทำงาน 1121 ถึง 1131, 1200 ถึง 1222 และ 0100 ถึง 0120 ก็ไม่มีอะไรเกิดขึ้นระหว่าง 1221 ถึง 1232 เขาคิดว่าเป็นปัญหาตั้งแต่วาง 113 โดยไม่ต้องนำ 0 ทำงานให้กับราศีมังกร ฉันเพิ่งเจอปัญหาที่ 0323 ซึ่งควรจะให้ฉันราศีเมษ (-gt 0320 && -lt 0332) ให้ฉันราศีกุมภ์ (วันที่มี -gt 0119 && -lt 0132 || -gt 0200 && -lt 0219) เช่นเดียวกับ 0417 ไม่ทำงาน (ซึ่งเป็นช่วงวันที่อื่น ๆ สำหรับราศีเมษ, -gt 0400 && -lt 0420)
ฉันต้องทำอย่างไรเพื่อให้ BASH ตีความอินพุตเป็นตัวเลขจริง เขาพยายามเปลี่ยนคำสั่งอ่านเพื่อคาดหวังว่า "userdate" เป็นอินพุตแล้วจึงเพิ่ม
olddate=`printf '%d\n' "$userdate"`
แต่นั่นไม่ได้ผล ขอบคุณล่วงหน้าสำหรับทุกคนที่สามารถช่วยฉันได้
test
มีตัวดำเนินการตัวเลขที่ชัดเจน