আমি বাশ স্ক্রিপ্টিং শিখছি এবং এটি আমার / usr / শেয়ার / বাশ-সমাপ্তি, লাইন 305 এ পেয়েছি:
local cword words=()
এটার কাজ কি? অনলাইন সমস্ত টিউটোরিয়াল কেবল বিন্যাসে রয়েছে
local var=value
আমি বাশ স্ক্রিপ্টিং শিখছি এবং এটি আমার / usr / শেয়ার / বাশ-সমাপ্তি, লাইন 305 এ পেয়েছি:
local cword words=()
এটার কাজ কি? অনলাইন সমস্ত টিউটোরিয়াল কেবল বিন্যাসে রয়েছে
local var=value
উত্তর:
যদিও আমি জর্ডানমের দেওয়া উত্তর পছন্দ করি বলে আমি মনে করি কম অভিজ্ঞ Linux
ব্যবহারকারীদের কীভাবে নিজেরাই এই জাতীয় প্রশ্নগুলি মোকাবেলা করতে হবে তা দেখানো সমান গুরুত্বপূর্ণ ।
গুগল অনুসন্ধান ফলাফল পৃষ্ঠায় প্রদর্শিত এলোমেলো পৃষ্ঠাগুলিতে উত্তর খোঁজার চেয়ে প্রস্তাবিত উপায়টি দ্রুত এবং আরও বহুমুখী।
প্রথমত, সমস্ত কমান্ড যা Bash
এগুলির একটি সুস্পষ্ট পথ টাইপ না করে চালানো ./command
যেতে পারে যেমন দুটি বিভাগে বিভক্ত করা যেতে পারে: Bash shell builtins
এবং external commands
। Bash shell builtins
এর সাথে ইনস্টল হয়ে আসুন Bash
এবং অংশ external commands
না থাকায় এটির অংশ Bash
। এটি গুরুত্বপূর্ণ কারণ Bash shell builtins
ভিতরে নথিবদ্ধ করা হয় man bash
এবং তাদের ডকুমেন্টেশনগুলি help
কমান্ডের সাথেও ডেকে আনা যেতে পারে যখন external commands
সাধারণত তাদের নিজস্ব নথিভুক্ত থাকে manpages
বা -h, --help
পতাকাটির কোনও রাজা নিতে পারে । কমান্ডটি একটি Bash shell builtin
বা একটি কিনা তা পরীক্ষা করতে external command
:
$ type local
local is a shell builtin
এটি প্রদর্শিত হবে how command would be interpreted if used as a command name
(থেকে help type
)। এখানে আমরা দেখতে পারি যে local
একটি shell builtin
। আসুন আরেকটি উদাহরণ দেখুন:
$ type vim
vim is /usr/bin/vim
এখানে আমরা দেখতে পাচ্ছি যে vim
এটি একটি shell builtin
নয় তবে এর মধ্যে অবস্থিত একটি বাহ্যিক কমান্ড /usr/bin/vim
। তবে, কখনও কখনও একই কমান্ড একটি উভয় ইনস্টল করা হতে পারে external command
এবং একটি হতে shell builtin
একই সময়ে। যোগ -a
করার জন্য type
সব সম্ভাবনা তালিকা, উদাহরণস্বরূপ:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
এখানে আমরা দেখতে পাচ্ছি যে echo
এটি উভয়ই shell builtin
এবং একটি external command
। তবে, আপনি যদি কেবল টাইপ করে echo
চাপেন তবে Returnএকটি কল করা shell builtin
হবে কারণ এটি এই তালিকায় প্রথম প্রদর্শিত হয়। মনে রাখবেন যে এই সমস্ত সংস্করণগুলির echo
একই হওয়ার দরকার নেই। উদাহরণস্বরূপ, আমার সিস্টেমে পতাকা /usr/bin/echo
লাগে --help
যখন builtin
না হয়।
ঠিক আছে, এখন যখন আমরা জানি যে local
এটি একটি শেল অন্তর্নির্মিত এটি আসুন এটি কীভাবে কাজ করে তা খুঁজে বার করুন:
$ help local
local: local [option] name[=value] ...
Define local variables.
Create a local variable called NAME, and give it VALUE. OPTION can
be any option accepted by `declare'.
Local variables can only be used within a function; they are visible
only to the function where they are defined and its children.
Exit Status:
Returns success unless an invalid option is supplied, an error occurs,
or the shell is not executing a function.
উল্লেখ্য প্রথম লাইন: name[=value]
। [
এবং এর মধ্যে সমস্ত ]
কিছুই .চ্ছিক । এটি একটি প্রচলিত কনভেনশন যা বিশ্বের অনেক manpages
এবং ডকুমেন্টেশনের আকারে ব্যবহৃত হয় *nix
। বলা হচ্ছে, আপনার প্রশ্নে যে আদেশটি আপনি জিজ্ঞাসা করেছেন তা পুরোপুরি আইনী। পরিবর্তে, ...
চরিত্রের অর্থ পূর্ববর্তী যুক্তি পুনরাবৃত্তি করা যেতে পারে। আপনি এই সংস্করণটির কয়েকটি সংস্করণেও পড়তে পারেন man man
:
The following conventions apply to the SYNOPSIS section and can be used
as a guide in other sections.
bold text type exactly as shown.
italic text replace with appropriate argument.
[-abc] any or all arguments within [ ] are optional.
-a|-b options delimited by | cannot be used together.
argument ... argument is repeatable.
[expression] ... entire expression within [ ] is repeatable.
সুতরাং, দিনের শেষে, আমি আশা করি যে এখন আপনার পক্ষে Linux
কাজ করার বিভিন্ন কমান্ড কীভাবে বোঝার একটি সহজ সময় হবে ।
local
?
man bash
। সেখানে একবার, /Arrays$
অ্যারে বিভাগে লাফিয়ে টাইপ করুন। ( $
পরবর্তী Arrays
অনুচ্ছেদে হ'ল বিভাগে ইন-পাঠ্য রেফারেন্সের মাধ্যমে সাইকেল চালানো প্রতিরোধ করা)) সেখান থেকে আপনি f
কোনও পৃষ্ঠা এগিয়ে b
যেতে বা পিছনে যেতে টাইপ করতে পারেন । q
আপনার কাজ শেষ হয়ে গেলে ম্যান পৃষ্ঠা থেকে প্রস্থান করতে টাইপ করুন।
help
কোনও আরগস ছাড়াই চলমান সমস্ত ব্যাশ বিল্টিনগুলি তালিকাভুক্ত করে যদি আপনি আরও দেখার আগ্রহী হন।
local
কেবলমাত্র বর্তমানে সংজ্ঞায়িত ফাংশনে স্কোপ থাকার জন্য কেবল একটি ভেরিয়েবল ঘোষণা করে, যাতে প্রধান নির্বাহী পরিবেশটি মানটি "দেখতে" না পারে। আপনি local
কোনও ফাংশনের বাইরে ব্যবহার করতে পারবেন না । উদাহরণ
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
আউটপুট: নন লোকাল ভেরিয়েবল
সুতরাং $onlyhere
ফাংশনের সুযোগ বাইরে দৃশ্যমান ছিল না।
var=()
, তবে আমি মনে করি যে আপনি কী সন্ধান করছেন তার নাম না জেনেও কিছুটা বের করা যায় । ;)