আপনার শেল কোডটিতে দুটি সমস্যা রয়েছে:
- সেখানে
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
?