সম্পর্কিত: কোন শেল ইন্টারপ্রেটার কোনও শেবাং ছাড়াই স্ক্রিপ্ট চালায়?
স্ক্রিপ্টটিতে শেবাং / হ্যাশবাং / #!লাইন নেই, কেবলমাত্র ডাবল ড্যাশ না থাকার কারণে #!।
তবে স্ক্রিপ্টটি শেল দ্বারা চালিত হবে (উপরের লিঙ্কিত প্রশ্নোত্তর দেখুন) এবং সেই শেলের মধ্যে যদি -কোনও ফাংশনের নামে বৈধ অক্ষর হয় তবে লাইনটি শেল ফাংশন ঘোষণা --করে যা কিছুই করে না (ভাল, এটি চলমান :, যা কিছুই করে না ) এবং যা কখনও বলা হয় না।
আরও সাধারণ বহু-রেখাঙ্কিত স্বরলিপিতে এই ফাংশনটি (এটির মতো দেখতে এটির আরও স্পষ্ট করে তুলতে, কারণ এর বিজোড় নাম কিন্ডাটি সত্য যে এটি একটি ফাংশনকে স্পষ্ট করে তোলে):
-- () {
:
}
ফাংশন সংজ্ঞাটির একমাত্র উদ্দেশ্য হ'ল একটি লাইন যা শেল স্ক্রিপ্টে বৈধ এবং একই সাথে একটি কার্যকর এসকিউএল কমান্ড (একটি মন্তব্য)। এই ধরণের কোডকে বহুভক্ত বলা হয় ।
বগাস শেল ফাংশনটি ঘোষণার পরে, স্ক্রিপ্টটি যখন শেল স্ক্রিপ্ট ইন্টারপ্রেটার দ্বারা সম্পাদন করা হয় তখন execচলমান শেলটি প্রক্রিয়াটির সাথে বর্তমান শেলটি প্রতিস্থাপন করতে ব্যবহার করে db2 -txf "$0", যা db2 -txfকমান্ড লাইন থেকে স্ক্রিপ্টের পথের নাম ব্যবহার করার মতোই হবে ।
এই কৌশলটি সম্ভবত এমন সিস্টেমে নির্ভরযোগ্যভাবে কাজ করবে না যেখানে dashবা অন্যান্য ashভিত্তিক শেলগুলি, yashবোর্ন শেল, ksh88বা ksh93হিসাবে ব্যবহৃত হয় /bin/sh, কারণ এই শেলটি যার নাম ড্যাশযুক্ত ফাংশন গ্রহণ করে না।
সম্পর্কিত:
আমি মনে করি যে নিম্নলিখিতগুলিও কাজ করবে (সত্যিই পরীক্ষিত নয়):
--() { exec db2 -txf "$0"; }; --