আমি বাশকে পূর্ণসংখ্যার পরিবর্তে অষ্টাল কোডটি ব্যাখ্যা করা থেকে কীভাবে থামাব?


13

আমি আ হোনস্কোপ আরএসএস স্ক্রিপ্টটি ইউনিক্স / লিনাক্স প্রকল্পের একটি ভূমিকা হিসাবে লিখছি এবং এমন একটি বিষয় নিয়ে এসেছি যা ক্লাসের পরে থাকতে পারার সময় আমার প্রফেসর ঠিক করতে পারেন নি। যেহেতু প্রকৃত তারিখগুলি কীভাবে পরীক্ষা করা যায় তা কীভাবে ব্যবহার করতে পারি তা আমি বুঝতে পারি না, তাই আমি ভেবেছিলাম যে এমএমডিডি ফর্ম্যাটে ব্যবহারকারীর ইনপুটটি স্ট্যান্ডার্ড নম্বর হতে পারে basic তাঁর মতে, স্ক্রিপ্টটি পূর্ণসংখ্যার পরিবর্তে অক্টাল কোড হিসাবে ইনপুট পড়ছে বলে মনে হচ্ছে। স্ক্রিপ্টের একটি নমুনা এখানে:

    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

এটি খালি হাড়, আমি আরএসএসের অংশটি বের করেছিলাম। "ওল্ডেটেট" হ'ল আমার পঠন প্রম্পট থেকে প্রত্যাশিত ইনপুট। 1121 থেকে 1131, 1200 থেকে 1222 এবং 0100 থেকে 0120 কাজ করার সময়, 1221 থেকে 1232 এর মধ্যে কিছুই করে না। তিনি বুঝতে পারেন যে সমস্যাটি ছিল 113 কোনও শীর্ষস্থানীয় 0 ছাড়াই মকর রাশির জন্য কাজ করা। আমি কেবল একটি সমস্যার মধ্যে দৌড়ে এসেছি যেখানে 0323 যা আমাকে মেষ রাশি দেবে বলে মনে করা হয়েছিল (-gt 0320 &< 0332) আমাকে কুম্ভ দিয়েছিল (যার তারিখ -gt 0119 &< 0132 || -gt 0200 &< 0219) পাশাপাশি 0417 কাজ করছে না (যা মেষের জন্য অন্যান্য তারিখের পরিসীমা, -gt 0400 &< 0420)।

আমি কী করব যাতে বেস ইনপুটটিকে প্রকৃত সংখ্যা হিসাবে ব্যাখ্যা করে? তিনি "ইউজারডেট" ইনপুট হিসাবে প্রত্যাশার জন্য পঠন প্রম্পটটি পরিবর্তনের চেষ্টা করেছিলেন এবং তারপরে যোগ করার চেষ্টা করেছিলেন

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

কিন্তু এটি কার্যকর হয়নি। যে কেউ এই বিষয়ে আমাকে সাহায্য করতে পারে অগ্রিম ধন্যবাদ!


4.4.12 বাশ-এ সদৃশ করতে পারবেন না।
Ignacio Vazquez-Abram

1
$ পুরানো তারিখটি একটি স্ট্রিং, কোনও সংখ্যা নয়, সুতরাং স্ট্রিং তুলনা ব্যবহার করুন এবং পুরো গণ্ডগোলটি এড়ান।
স্টিফেন হ্যারিস

2
@ স্টেফেনহরিস: অপারেটরগুলির ডান দিকের মানগুলিও তাই। এজন্য testস্পষ্ট সংখ্যার অপারেটর রয়েছে।
Ignacio Vazquez-Abram

একটি বিষয় লক্ষণীয়, তবে মূল প্রশ্নের সাথে সম্পর্কিত নয়, আপনার রাশির চিহ্নটি আপনি যে বছর জন্মগ্রহণ করেছিলেন তার উপরও আংশিকভাবে নির্ভরশীল, যদি আপনার দিন ও জন্মের মাসটি 2 রাশিচক্রের মধ্যে সংক্রমণের কাছাকাছি ছিল। আপনার রাশিচক্রটি আপনার জন্মের সময় আকাশের 1/12 তম অংশের উপর ভিত্তি করে তৈরি হয়েছিল, তবে বছরের মধ্যে দিনগুলির সংখ্যা পুরো সংখ্যা বা 12 দ্বারা বিভাজ্য নয়, তাই কিছুটা ভিন্নতা রয়েছে বছর বছর। এই প্রকরণটি অন্যথায় যদি সত্যিই ক্যাপচারের জন্য খুব জটিল তবে এটি এমন কিছু যা জানা ভাল।
Nzall

উত্তর:


28

আপনি যেমন বাশের নির্দিষ্ট সংখ্যায় রূপান্তর করতে পারেন তেমন:

$ foo=400
$ echo $((8#$foo))
256
$ bar=0100
$ echo $((10#$bar))
100

সাধারণভাবে ফর্ম্যাটটি হয় $((base#value))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.