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