আমি যথেষ্ট সাধারণ কিছু করার চেষ্টা করছি: শেল স্ক্রিপ্টে ব্যবহারকারী ইনপুট পার্স করুন। যদি ব্যবহারকারী কোনও বৈধ পূর্ণসংখ্যার সরবরাহ করে তবে স্ক্রিপ্টটি একটি কাজ করে এবং যদি বৈধ না হয় তবে এটি অন্য কিছু করে। সমস্যাটি হ'ল, এটি করার কোনও সহজ (এবং যুক্তিসঙ্গত মার্জিত) উপায় আমি খুঁজে পাইনি - আমি চাই না যে এটিকে চর দিয়ে আলাদা করে নিতে পারি।
আমি জানি এটি সহজ হতে হবে তবে কীভাবে তা আমি জানি না। আমি এটি এক ডজন ভাষায় করতে পারলাম, তবে খালি নয়!
আমার গবেষণায় আমি এটি পেয়েছি:
বেস 10 তে কোনও স্ট্রিংটিতে একটি বৈধ আসল সংখ্যা রয়েছে কিনা তা পরীক্ষা করার জন্য নিয়মিত অভিব্যক্তি
এবং এর মধ্যে একটি উত্তর রয়েছে যা রেজেক্স সম্পর্কে কথা বলে, তবে যতদূর আমি জানি, এটি সিতে (অন্যদের মধ্যে) একটি ফাংশন উপলব্ধ। তবুও, এটি দুর্দান্ত উত্তরের মতো দেখতে পেয়েছিল তাই আমি গ্রেপ দিয়ে চেষ্টা করেছিলাম, তবে গ্রেপ এটি দিয়ে কী করতে পারে তা জানত না। আমি চেষ্টা করেছি-পি যা আমার বাক্সে এর অর্থ এটি PERL রেজিএক্সএক্স - নাদা হিসাবে বিবেচনা করা। ড্যাশ ই (-E )ও কাজ করেনি। এবং উভয়ই -F করেনি।
কেবল স্পষ্ট করে বলার জন্য, আমি এই জাতীয় কিছু চেষ্টা করছি, যে কোনও আউটপুট খুঁজছি - সেখান থেকে, আমি যা কিছু পাব তার সুবিধা নিতে আমি স্ক্রিপ্টটি হ্যাক করব। (আইওডাব্লু, আমি প্রত্যাশা করছিলাম যে একটি বৈধ লাইন পুনরাবৃত্তি হওয়ার পরে একটি অ-অনুসরনকারী ইনপুট কিছুই দেয় না))
snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/")
if [ -z "$snafu" ] ;
then
echo "Not an integer - nothing back from the grep"
else
echo "Integer."
fi
এটি কীভাবে খুব সহজে সম্পন্ন হয় কেউ দয়া করে বর্ণনা করতে পারেন?
সত্যি বলতে, এটি আমার মতে টেস্টের একটি সংক্ষিপ্ত-আগমন। এটির মতো পতাকা থাকা উচিত
if [ -I "string" ] ;
then
echo "String is a valid integer."
else
echo "String is not a valid integer."
fi
[
পুরানো সামঞ্জস্যপূর্ণtest
;[[
আরও অপারেশন এবং বিভিন্ন উদ্ধৃতি বিধি সহ বাশের নতুন জিনিস new যদি আপনি ইতিমধ্যে বাশের সাথে লেগে থাকার সিদ্ধান্ত নিয়েছেন তবে যান[[
(এটি সত্যিই খুব সুন্দর); আপনার যদি অন্য শেলগুলির কাছে বহনযোগ্যতা দরকার হয় তবে[[
সম্পূর্ণ এড়ানো উচিত ।