মানব-পঠনযোগ্য ইনপুট থেকে সংখ্যার ক্রম তৈরি করুন


2

ব্যাশে, আমার একটি প্রোগ্রাম রয়েছে যা ডাউনলোডের জন্য ফাইলগুলির বিভিন্ন পছন্দ তালিকাভুক্ত করে, তারপরে ব্যবহারকারীকে কিছু নির্বাচন করতে অনুরোধ করে। আমি চাই যে ব্যবহারকারী 1-6,8,11-121, 2, 3, 4, 5, 6, 8, 11 এবং 12 ফাইল ডাউনলোড করার মতো কিছু টাইপ করতে সক্ষম হবেন আমি কীভাবে সংখ্যার ক্রম তৈরি করতে পারি ( forলুপে রাখতে ) এই জাতীয় মানব পাঠযোগ্য ইনপুট থেকে?

উত্তর:


3
echo 1-6,8,11-12 | tr -cd "0-9,\n-" | tr "," "\n" | while IFS=- read A B; do eval echo {$A..${B:-$A}}; done | tr "\n" " "

আউটপুট:

1 2 3 4 5 6 8 11 12

খনি আউটপুটগুলি {1..6} {8..8} {11..12}। বাশ সংস্করণ 4.3.25 (2) -রিলেজ (ফ্রিবিএসডি তে)
— সুচিপি

খুব ঝরঝরে সমাধান! করুণা এটি @ সুচিপির পক্ষে কাজ করে না - সম্ভবত ফ্রিবিএসডি-তে ডিফল্টরূপে ব্রেস সম্প্রসারণ শুরু হয় না এবং set -Bএটি প্রয়োজন।
— এএফএইচ

@ সুচিপি: আমি এটি বাশ ৪.৩.১১ (১) -রিলেজ (উবুন্টু ১৪.০৪) দিয়ে পরীক্ষা করেছি। evalউদ্ধৃতি চিহ্ন দিয়ে চেষ্টা করুন :echo 1-6,8,11-12 | tr -cd "0-9,\n-" | tr "," "\n" | while IFS=- read A B; do eval "echo {$A..${B:-$A}}"; done | tr "\n" " "
— সাইরাস

আমি echo {1..10}আমার স্ক্রিপ্টে রাখার চেষ্টা করেছি এবং এটি সূক্ষ্মে রূপান্তরিত হয়েছে 1 2 3 4 5 6 7 8 9 10, তাই এটি অবশ্যই কিছু হওয়া উচিত eval। evalএকটি বিল্টিন আছে, তাই না? যদি না হয়, এটি ভুল ব্যবহার করা হতে পারে eval? সম্পাদনা: আমরা একে অপরের উপরে মন্তব্য। উদ্ধৃতি যুক্ত করা আমার পক্ষে কাজ করে না বলে মনে হচ্ছে।
— সুচিপি

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