এখানে তিনটি অপ্রাসঙ্গিক ব্যবহার রয়েছে @
।
ইন $@
, অক্ষরটি একটি নিয়মে ব্যবহৃত হতে পারে এমন @
একটি স্বয়ংক্রিয় চলকের নাম । সেই পরিবর্তনশীলটির মান হ'ল নিয়ম যে লক্ষ্যটি তৈরি করছে।
যখন @
একটি রেসিপি (কমান্ড) লাইনের একেবারে শুরুতে ট্যাব চরিত্রের ঠিক পরে ব্যবহার করা হয়, এটি কার্যকর করার সময় কমান্ডটি মুদ্রণ না করে ।
চরিত্রটি @
অন্য কোথাও বিশেষ নয়।
সুতরাং, আপনার উদাহরণে, নির্মাণের জন্য program
:
file
ফাংশন প্রার্থনা করা হয়। এটি লক্ষ্যমাত্রার নির্ভরতা ( $^
স্বয়ংক্রিয় ভেরিয়েবল) ফাইলটিতে লিখে দেয় program.in
।
ভেরিয়েবলের মধ্যে যে কোনও কমান্ড সঞ্চিত থাকে CMD
তা কার্যকর করা হয়, ভেরিয়েবলের মধ্যে থাকা CMDFLAGS
প্যারামিটারগুলি সহ অতিরিক্ত পরামিতি @program.in
। এটি যা করে তা নির্ভর করে কিসের CMD
উপর।
কমান্ডটি rm program.in
প্রথমে প্রিন্ট না করেই কার্যকর করা হয়।
কয়েকটি কমান্ড একটি প্যারামিটার দিয়ে শুরু করে @
যা একটি ফাইল নির্দেশ করে যা থেকে আরও পরামিতি পড়তে হয়। এটি একটি ডস কনভেনশন যা নিয়ে এসেছিল কারণ কমান্ড লাইনের দৈর্ঘ্যের উপর ডসের একটি কঠোর সীমা ছিল এবং কমান্ড লাইনে কোনও আদেশের আউটপুটকে বিভক্ত করার কোনও উপায় ছিল না। ইউনিক্সের এই সীমাবদ্ধতা নেই বলে ইউনিক্স বিশ্বে এটি অস্বাভাবিক। এই রেসিপিটির প্রভাব সম্ভবত একই রকম
$(CMD) $(CMDFLAGS) $(OBJECTS)
>$@.in
একটি ফাইল মোড হিসাবে ব্যবহার করা হয় ... তবে এটি নিজস্ব উপায়ে কার্যকর .. ধন্যবাদ কিউংএলএম ...