সুতরাং, bash
বর্ণমালা সম্প্রসারণের জিনিসটির সাথে এটি কাজ করে:
set {a..z}
for a do printf "./$a/$a%s\n" "$@"
done | xargs mkdir -p
এবং যদি আপনি প্রথম লাইনে একবার বর্ণমালা টাইপ করেন তবে একই ধারণাটি কোনও শেলের কাছে বহনযোগ্য হতে হবে। আপনি যদি এটি টাইপ করতে না চান তবে সেট লাইনে পৌঁছানোর অন্যান্য উপায় রয়েছে:
seq -sP32P 97 123|dc
a b c d e f g h i j k l m n o p q r s t u v w x y z
... উদাহরণস্বরূপ একটি ASCII লোকালে কাজ করে। সুতরাং আপনি করতে পারেন set $(seq -sP32P 97 123|dc)
বা অন্য কোনও কমান্ড যা $IFS
আপনাকে প্রয়োজনীয় আর্গুমেন্টগুলির একটি পৃথক তালিকা পেতে পারে তবে আমার অর্থ, bash
জিনিসটি ব্যবহার করা বা এটি টাইপ করা ভাল probably
যাইহোক, আমি মনে করি যে এটি আমি কেবল তখনই করতাম কারণ এটি কেবল যতবার mkdir
প্রয়োজন ততবার আহ্বান করে ।
এবং এটি কীভাবে কাজ করে তা প্রদর্শনের জন্য , এখানে একটি ছোট সেটটির একটি সামান্য ডিবাগ আউটপুট দেওয়া হয়েছে:
sh -cx 'for n do printf "./$n/$n%s\n" "$@"; done|cat' -- arg1 arg2 arg3
+ for n in '"$@"'
+ printf './arg1/arg1%s\n' arg1 arg2 arg3
+ cat
+ for n in '"$@"'
+ printf './arg2/arg2%s\n' arg1 arg2 arg3
+ for n in '"$@"'
+ printf './arg3/arg3%s\n' arg1 arg2 arg3
./arg1/arg1arg1
./arg1/arg1arg2
./arg1/arg1arg3
./arg2/arg2arg1
./arg2/arg2arg2
./arg2/arg2arg3
./arg3/arg3arg1
./arg3/arg3arg2
./arg3/arg3arg3
আপনি দেখতে পাচ্ছেন, for
পজিশনাল প্যারামিটার অ্যারে সূচক অনুসারে একবারে কেবল লুপগুলি, যা আমি এখানে বিন্যাসের সময় কেবলমাত্র sh
পরামিতিগুলি হস্তান্তর করে এবং এর সাথে উপরে সেট করেছি set ${positionals}
। তবে printf
প্রতিটি পুনরাবৃত্তির জন্য তার আর্গুমেন্ট তালিকায় একই অ্যারে গ্রহণ করে এবং এর প্রতিটি বিন্যাসে এটির বিন্যাসের স্ট্রিং প্রয়োগ করে, তাই আপনি কোনও অপ্রয়োজনীয় পুনরাবৃত্তি ছাড়াই পুনরাবৃত্তির লক্ষণটি পান get
এবং done|command
উইল যুক্ত করে for
পাইপের উপরে লুপের সমস্ত আউটপুট একই done >file
প্রবাহে প্রবাহিত করে - সমস্ত সম্পূর্ণ for...done
নির্মাণের জন্য কেবল একবার আউটপুট ফাইলটি খোলার এবং বন্ধ করতে ।