শেল স্ক্রিপ্টে আমি নিম্নলিখিত নিয়মিত প্রকাশগুলি সম্পর্কে বেশ বিভ্রান্ত হয়ে পড়েছি:
${0##*/}
${0%/*}
তারা কিভাবে কাজ করে?
শেল স্ক্রিপ্টে আমি নিম্নলিখিত নিয়মিত প্রকাশগুলি সম্পর্কে বেশ বিভ্রান্ত হয়ে পড়েছি:
${0##*/}
${0%/*}
তারা কিভাবে কাজ করে?
উত্তর:
এগুলি নিয়মিত প্রকাশ নয়, এগুলি বাশের প্যারামিটার বিস্তারের উদাহরণ: ভেরিয়েবলের পরিবর্তে বা এর মান অনুসারে একটি বিশেষ পরামিতির বিকল্প। উওউলেজ উইকির একটি ভাল ব্যাখ্যা রয়েছে ।
মূলত, আপনার যে উদাহরণটি রয়েছে তা ${0##*/}
অনুবাদ করে:
ভেরিয়েবল $ 0 এবং প্যাটার্নের জন্য '/', দুটি হ্যাশগুলি প্যারামিটারের শুরু থেকেই বোঝায় , দীর্ঘতম (বা লোভী) ম্যাচটি delete প্যাটার্ন পর্যন্ত এবং মোছা মুছুন।
সুতরাং, $0
কোনও ফাইলের নাম কোথায় , উদাহরণস্বরূপ $HOME/documents/doc.txt
, তারপরে প্যারামিটারটি প্রসারিত হবে:doc.txt
তেমনি, এর জন্য ${0%/*}
, প্যারামিটারের শেষের/
সাথে প্যাটার্নটি মেলানো হয়েছে (দ্য ), সংক্ষিপ্ত বা অ-লোভী মিলটি মুছে ফেলা হয়েছে - যা উপরের উদাহরণে আপনাকে দেবে ।%
$HOME/documents
বাশ হ্যাকারের উইকির নিবন্ধটিও দেখুন ।
*
) নির্দেশ করে যে প্যাটার্ন পর্যন্ত সমস্ত কিছু মুছে ফেলা হবে। সুতরাং, প্যারামিটারের শুরুতে #
, এটি %
ডান থেকে অন্য উপায়ে কাজ করে বাম এবং শেষের দিকে রয়েছে।
sh
।
basename
এবংdirname
? : ডি