ব্যাশ ব্যবহার করে কোনও URL থেকে বেস ফাইলের নামটি বের করুন Ext


15
url=http://www.foo.bar/file.ext; echo ${url##/*}

আমি এই কোডটি মুদ্রণের প্রত্যাশা করেছি file.ext, তবে এটি পুরো URL টি মুদ্রণ করে। কেন? আমি কীভাবে ফাইলটির নাম বের করতে পারি?


ঠিক আছে obv আমি প্রত্যাশা করছি ভুল জিনিসগুলি ঘটবে। আচ্ছা, আমি file.ext নিষ্কাশন করতে চাই
ম্যানুয়েলস্কিনিড

আপনি স্ট্রিংটি কেটে দেওয়ার চেষ্টা করছেন? ব্যবহার করে দেখুন dirname $url। বা grep -o 'http://[^/]*' <<<$url
কেভিন

উত্তর:


28

কারণ শব্দটি ছাঁটাতে স্ট্রিংয়ের সাথে মিলাতে হবে। এটি দেখতে হবে:

url="http://www.foo.bar/file.ext"; echo "${url##*/}"

ধন্যবাদ ডারোবার্ট, আপনি আমাকে সঠিক দিকে চালিত করেছেন।


হাহ, আমরা উভয় একই সময়ে বুঝতে পারি যে। সাহায্য করার জন্য খুশি।
ডার্বোবার্ট

10

মানচিত্রটি উদ্ধৃত করতে:

${parameter##word}
   Remove matching prefix pattern.  The word is expanded to produce
   a pattern just as in pathname expansion.  If the pattern matches
   the  beginning of the value of parameter, […]

/*শুরুতে সাথে মেলে না, কারণ আপনার URL দিয়ে শুরু হয় hনা /

একটি তুচ্ছ ভাবে আপনি (আপনার মন্তব্য অনুযায়ী) যা খুঁজছেন তা করতে হয় echo "$url" | rev | cut -d / -f 1 | rev। তবে অবশ্যই, এটি ইউআরএলগুলির একটি স্ল্যাশে শেষ হওয়ার জন্য আকর্ষণীয় ফলাফল দেবে।

আপনি যা চান তা করার আরেকটি উপায় হ'ল */পরিবর্তে প্যাটার্নটি ব্যবহার করা।


আপনি কী করতে হবে তার একটি ব্যাখ্যা দিয়েছেন এবং ম্যানপেজ থেকে উদ্ধৃতিটি একটি বিশাল প্লাস! ওটা আমাকে অনেক সাহায্য করেছে! আবার ধন্যবাদ! :)
ফাদি


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