আমি আজ একটি বাশ স্ক্রিপ্ট জুড়ে এসেছি যার ফাংশনের নাম রয়েছে যার মধ্যে ডাবল কলোন ::রয়েছে, যেমন, file::write()এবং file::read()। আমি এই সিনট্যাক্সটি বাশ স্ক্রিপ্টের আগে কখনও দেখিনি, এবং যখন আমি স্ক্রিপ্টটি চালিত করি তখন এটি ঠিকঠাক (আমার অবাক হওয়ার জন্য) দৌড়ে যায়।
আমার সিস্টেমে বাশের ম্যান পেজটি ঝাঁকুনির পরে (এবং অনলাইন) ফাংশন নামের জন্য এই সিনট্যাক্সটিকে সমর্থন করে এমন ডকুমেন্টেশনে আমি এমন কিছু খুঁজে পাচ্ছি না। উদাহরণস্বরূপ, বিভাগটি Shell Defined Functionsশেল ফাংশন হওয়ার জন্য সিনট্যাক্সটি সংজ্ঞায়িত করে
function name [()] compound-command [redirection]
এবং তারপরে (ম্যানুয়ালটিতে অন্য কোথাও) টোকেনটি nameহিসাবে সংজ্ঞায়িত করা হয়েছে
name A word consisting only of alphanumeric characters and
underscores, and beginning with an alphabetic character
or an underscore. Also referred to as an identifier.
ফাংশন নামের জন্য ডাবল কোলন সিনট্যাক্সের কোথাও উল্লেখ নেই।
এই ডাবল কোলন সিনট্যাক্সের কেবলমাত্র অন্য রেফারেন্স যা আমি এ পর্যন্ত খুঁজে পেয়েছি তা হ'ল এই শেল স্টাইল গাইড (অনুচ্ছেদটি দেখুন Naming Conventions > Function Names) যা "প্যাকেজগুলিতে" ফাংশন নামের জন্য ডাবল কোলন সিনট্যাক্স ব্যবহার করার পরামর্শ দেয় - যেমন mypackage::myfunction(),।
এই ডাবল কোলন সিনট্যাক্সটি ফাংশনটির জন্য বাশ শেলের বৈধ বৈশিষ্ট্যটির নাম দেয়, বা এটি সম্ভবত একটি অনির্ধারিত বৈশিষ্ট্য? যদি এটি বৈধ হয় তবে এটি বাশ ম্যানুয়ালটিতে নথিভুক্ত কোথায়? আমি তাকিয়ে দেখেছি কিন্তু ম্যানুয়ালটিতে আমি এটি সম্পর্কে কিছুই খুঁজে পাচ্ছি না। নিকটস্থ আমি করেছি পাওয়া ব্যবহার ::মধ্যে PATHএনভায়রনমেন্ট ভেরিয়েবল সার্চ-পাথের সাম্প্রতিক কাজ করা যোগ করুন।
EXAMPLE টি
#!/bin/bash
function abc::def() {
echo "${FUNCNAME[0]}"
}
abc::def
আমি এই স্ক্রিপ্টটি তিনটি ভিন্ন লিনাক্স ডিস্ট্রোজে পরীক্ষা করেছিলাম এবং তিনটিতেই স্ক্রিপ্ট প্রিন্ট করেছিলাম abc::defout