ব্যাশে, আমি জানি যে একটি forলুপ লেখা সম্ভব যেখানে iনির্দিষ্ট লক পূর্ণসংখ্যার উপর দিয়ে কিছু লুপ নিয়ন্ত্রণের পরিবর্তনশীল পুনরাবৃত্তি হয়। উদাহরণস্বরূপ, আমি একটি বাশ শেল স্ক্রিপ্ট লিখতে পারি যা 1 এবং 10 এর মধ্যে পূর্ণসংখ্যা মুদ্রণ করে:
#!/bin/bash
for i in {1..10}
do
echo $i
done
যদি আমি স্ট্রিংয়ের একটি তালিকা সরবরাহ করি তবে তার পরিবর্তে একটি স্ট্রিংয়ের একটি লুপ নিয়ন্ত্রণ ভেরিয়েবলের মাধ্যমে পুনরাবৃত্তি করা সম্ভব? উদাহরণস্বরূপ, ধরুন আমার কাছে একটি স্ট্রিং রয়েছে fnameযা কোনও ফাইলের নাম উপস্থাপন করে। আমি প্রতিটি ফাইলের নামের জন্য কমান্ডের একটি সেট কল করতে চাই। উদাহরণস্বরূপ, আমি fnameএই জাতীয় কমান্ড ব্যবহার করার বিষয়বস্তু মুদ্রণ করতে চাই:
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
অন্য কথায়, প্রথম পুনরাবৃত্তিতে, fnameএর মান হওয়া উচিত fname="a.txt", যখন দ্বিতীয় পুনরাবৃত্তির উপর, fnameএর মান হওয়া উচিত fname="b.txt", ইত্যাদি। দুর্ভাগ্যক্রমে, মনে হচ্ছে উপরের সিনট্যাক্সটি বেশ সঠিক নয়। আমি আউটপুট পেতে চাই:
a.txt
b.txt
c.txt
তবে যখন আমি উপরের কোডটি চেষ্টা করি তখন আমি এই আউটপুটটি পাই:
{A.txt,
b.txt,
c.txt}
আপনি কি দয়া করে আমাকে সঠিক বাক্য গঠন নির্ধারণ করতে সহায়তা করতে পারেন, যাতে আমি পরিবর্তনশীলটির মান / বিষয়বস্তুকে পুনরাবৃত্তি করতে পারি fname? সময় দেয়ার জন্য ধন্যবাদ.
{} এবং, গুলি। বিকল্পটি হ'ল স্থানগুলি সরিয়ে ফেলা। সুতরাং হয় "a.txt" "b.txt" "c.txt"বা {"a.txt","b.txt","c.txt"}। তবে আমি {a..c}.txtতার পরিবর্তে পছন্দ করি ।
{}, কোনও (স্পেস-সীমাবদ্ধ) তালিকায় লুপ করার জন্য আপনার কোনও প্রয়োজন নেই