বাশ শেল স্ট্রিং কনটেনটেশন


1

আমি একটি স্ট্রিং তৈরি করে এটিকে দেওয়ার চেষ্টা করছি rm, তবে এটি কার্যকর করতে আমার কিছুটা সমস্যা হচ্ছে। আমি সমস্ত কিছু মুছে ফেলতে চাই MY_PATH। নীচে আমি চেষ্টা করেছি কি।

MY_PATH=/my/directory/
echo ${MY_PATH}'*' # This works as expected.
rm -vfr ${MY_PATH}'*' # This doesn't.

সম্পাদনা: আমি এটি সন্ধান। আমার একটা টাইপ ছিল


ডাবল উক্তি ব্যবহারের গুরুত্বটিকে কখনই হ্রাস করবেন না। তবে ভেরিয়েবল সেট করার জন্য আপনার সত্যিই ধনুর্বন্ধকের প্রয়োজন নেই। শুধু থাকার rm -vfr "$MY_PATH"পুরোপুরি ঠিক আছে।
যোকাই

উত্তর:


6

আপনার সঠিকভাবে কাজ echoকরে না । শেলটি আরএম নয়, ওয়াইল্ডকার্ড প্রসারণের জন্য দায়ী।

rm -vfr "${MY_PATH}"*

1
বা, আরও ভাল, ব্যবহার করুন rm -vfr "${MY_PATH}"/*যদি সেটটি সেট করা থাকে /তখন পিছনটি ভুলে যায় MY_PATH। বর্তমানে লিখিত হিসাবে, এর মধ্যে পার্থক্য MY_PATH=/my/dir/এবং MY_PATH=/my/dirযে অপেক্ষাকৃত পরবর্তীটি শুধু মুছে ফেলবে নয় /my/dir(ডিরেক্টরি, শুধু বিষয়বস্তু), কিন্তু মুছে যাবে /my/dir1, /my/directory123, /my/directors_important_files... আর, শ্রেষ্ঠ সব, তা যাচাই করতে পরীক্ষা MY_PATHআসলে সেট করা থাকলে - অন্যথায় (আমার প্রস্তাবিত পরিবর্তনের সাথে) আপনি চেষ্টা করতে চেয়েছিলেন (তবে সম্ভবত আপনি ব্যর্থ হবেন না) নীচে সবকিছু মুছে ফেলতে চান/*
মাইকেল

2

আপনার উদ্ধৃতি দরকার নেই, কেবল ব্যবহার করুন:
rm -vrf ${MY_PATH}*


2
যদি না $MY_PATHহোয়াইটস্পেস ধারণ করে।
Ignacio Vazquez-Abram
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.