আপনার শেল কোডটিতে দুটি সমস্যা রয়েছে:
- সেখানে
echoথাকা উচিত নয়।
- গন্তব্য ফাইলের নামের
$iমতো ভেরিয়েবলটি ভুল টাইপ করা $1হয়।
ফাইলটি একই ডিরেক্টরিতে কোনও ফাইলের অনুলিপি তৈরি করতে, ব্যবহার করুন
cp thefile thecopy
আপনি যদি সেখানে কিছু inোকান, উদাহরণস্বরূপ
cp thefile theotherthing thecopy
তারপরে ধরে নেওয়া হয় যে আপনি অনুলিপি করতে চান thefileএবং ডাকা ডিরেক্টরিটিতেtheotherthing প্রবেশ করতে চান ।thecopy
আপনার ক্ষেত্রে, এটি বিশেষত কল করা ফাইল test.oggএবং echoডিরেক্টরিটিতে অনুলিপি করার জন্য একটি ফাইল সন্ধান করে test$1.ogg।
$1সম্ভবত একটি খালি স্ট্রিং প্রসারিত হবে। এই কারণেই, আপনি echoকমান্ড থেকে মুছলে আপনি "test.ogg এবং test.ogg একই ফাইল" পাবেন; কার্যকর করা কমান্ড মূলত
cp test.ogg test.ogg
এটি সম্ভবত একটি ভুল টাইপ।
শেষ পর্যন্ত, আপনি এই জাতীয় কিছু চান:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
বা, বিকল্প হিসাবে
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
বা, ব্যবহার করে tee:
tee test{1..100}.ogg <test.ogg >/dev/null
দ্রষ্টব্য: এটি সম্ভবত 100 টি অনুলিপিগুলির জন্য কাজ করবে তবে হাজার হাজার অনুলির জন্য এটি "যুক্তি তালিকা খুব দীর্ঘ" ত্রুটি তৈরি করতে পারে। সেক্ষেত্রে একটি লুপ ব্যবহার করে ফিরে আসুন।
echoযা সেখানে থাকার কথা নয়, আর$1যা হওয়া উচিত$i?