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


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, তাই এটি অবশ্যই কিছু হওয়া উচিত evalevalএকটি বিল্টিন আছে, তাই না? যদি না হয়, এটি ভুল ব্যবহার করা হতে পারে eval? সম্পাদনা: আমরা একে অপরের উপরে মন্তব্য। উদ্ধৃতি যুক্ত করা আমার পক্ষে কাজ করে না বলে মনে হচ্ছে।
সুচিপি

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