मैं पूर्णांक के बजाय अष्टक कोड की व्याख्या करने से बैश को कैसे रोक सकता हूं?


13

मैं यूनिक्स / लिनक्स प्रोजेक्ट के लिए एक परिचय के रूप में आ कुंडली आरएसएस स्क्रिप्ट लिख रहा हूं, और मेरे प्रोफेसर उस समय में ठीक नहीं कर सकते थे जब मैं कक्षा के बाद रहने में सक्षम था। चूंकि मैं यह पता नहीं लगा सका कि वास्तविक तिथियों का उपयोग किस तरह से किया जाए, तो मुझे लगा कि मैं एमएमडीडी प्रारूप में मानक संख्या होने के कारण उपयोगकर्ता इनपुट द्वारा मूल अंकगणित की कोशिश करूंगा। उनके अनुसार, स्क्रिप्ट पूर्णांक के बजाय ऑक्टल कोड के रूप में इनपुट पढ़ रही है। यहाँ स्क्रिप्ट का एक नमूना है:

    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

यह नंगी हड्डियां हैं, मैंने आरएसएस का हिस्सा निकाल लिया। "पुराना" मेरे पढ़ने के संकेत से अपेक्षित इनपुट है। जबकि ११२१ से ११३१, १२०० से १२२२, और ०११०० से ०१२० काम, १२२१ से १२३२ के बीच कुछ भी नहीं करता है। उन्होंने अनुमान लगाया कि मकर के लिए एक अग्रणी 0 के बिना 113 लगाने के बाद से समस्या थी। मैं भी बस एक समस्या में भाग गया, जहाँ 0323 जो मुझे मेष राशि देने वाली थी (-gt 0320 &&-03.332) ने मुझे कुंभ राशि दी (जिसकी तारीखें हैं -0t911 और& -lt 0132 || -gt 0200 -&t-02 02) साथ ही साथ 0417 काम नहीं कर रहा है (जो मेष राशि के लिए अन्य तिथि सीमा है, -gt 0400 && -lt 0420)।

मैं ऐसा क्या करता हूं कि BASH इनपुट की वास्तविक संख्या के रूप में व्याख्या करता है? उन्होंने इनपुट के रूप में "उपयोगकर्ताडेट" और फिर जोड़ने की उम्मीद करने के लिए रीड प्रॉम्प्ट को बदलने की कोशिश की

olddate=`printf '%d\n' "$userdate"`

लेकिन वह काम नहीं किया। किसी को भी अग्रिम धन्यवाद, जो इस पर मेरी मदद कर सकता है!


बैश पर नकल नहीं कर सकते 4.4.12।
इग्नासियो वाज़केज़-अब्राम्स

1
$ ओल्डडेट एक स्ट्रिंग है, संख्या नहीं है, इसलिए स्ट्रिंग तुलना का उपयोग करें और पूरे गड़बड़ से बचें।
स्टीफन हैरिस

2
@StephenHarris: तो ऑपरेटरों के अधिकार के लिए मूल्य हैं। यही कारण है कि testस्पष्ट संख्यात्मक ऑपरेटरों है।
इग्नासियो वाज़क्वेज़-अब्राम्स

एक बात ध्यान दें, लेकिन मूल प्रश्न से असंबंधित, यह है कि आपकी राशि भी आंशिक रूप से उस वर्ष पर निर्भर करती है, जिसमें आप पैदा हुए थे, यदि आपका दिन और जन्म का महीना 2 राशियों के बीच संक्रमण के करीब था। आपकी राशि सूर्य के आकाश के 1/12 वें भाग पर आधारित है, जिस समय आप पैदा हुए थे उस समय सूर्य था, लेकिन क्योंकि एक वर्ष में दिनों की संख्या पूरी संख्या में नहीं है और न ही 12 से विभाज्य है, इससे कुछ भिन्नता है सालो साल। यह विविधता वास्तव में अगर-और पेड़ों पर कब्जा करने के लिए बहुत जटिल है, लेकिन यह सिर्फ कुछ ऐसा है जिसे जानना अच्छा होगा।
नजल्ल

जवाबों:


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.