Я пишу 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 інтерпретував введення як фактичні числа? Він спробував змінити підказку читання, щоб очікувати "введення даних користувача" як введення, а потім додавання
olddate=`printf '%d\n' "$userdate"`
але це не спрацювало. Заздалегідь дякую всім, хто може мені допомогти у цьому!
test
є явні числові оператори.