Tôi đang viết một kịch bản RSS Tử vi như một phần giới thiệu cho dự án Unix / Linux và gặp phải một vấn đề mà Giáo sư của tôi không thể khắc phục trong thời gian tôi có thể ở lại sau giờ học. Vì tôi không thể tìm ra cách sử dụng ngày thực tế như những gì cần kiểm tra, tôi nghĩ rằng tôi đã thử số học cơ bản bằng cách nhập dữ liệu của người dùng là số chuẩn ở định dạng MMDD. Theo ông, kịch bản dường như đang đọc đầu vào dưới dạng mã bát phân thay vì số nguyên. Đây là một mẫu của kịch bản:
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
Đây là xương trần, tôi lấy ra phần RSS. "olddate" là đầu vào dự kiến từ dấu nhắc đọc của tôi. Trong khi 1121 đến 1131, 1200 đến 1222 và 0100 đến 0120 hoạt động, không có gì từ 1221 đến 1232. Anh ta cho rằng đó là vấn đề kể từ khi đặt 113 mà không có số 0 đứng đầu làm việc cho Ma Kết. Tôi cũng vừa gặp phải một vấn đề trong đó 0323 được cho là cung cấp cho tôi Bạch Dương (-gt 0320 && -lt 0332) đã đưa cho tôi Bảo Bình (có ngày là -gt 0119 && -lt 0132 || -gt 0200 && -lt 0219) cũng như 0417 không hoạt động (đó là phạm vi ngày khác cho Bạch Dương, -gt 0400 && -lt 0420).
Tôi phải làm gì để BASH diễn giải đầu vào là số thực? Anh ấy đã thử thay đổi lời nhắc đọc để mong đợi "userdate" làm đầu vào và sau đó thêm
olddate=`printf '%d\n' "$userdate"`
nhưng điều đó đã không làm việc. Cảm ơn trước cho bất cứ ai có thể giúp tôi về điều này!
test
có toán tử số rõ ràng.