অ্যান্ড্রয়েড

বাশ ফাংশন

দিনাজপুরে নায়িকাকে ভাজ করে দিলেন চিকন আলী I Chikon Ali new stage show 2020 I ha du du

দিনাজপুরে নায়িকাকে ভাজ করে দিলেন চিকন আলী I Chikon Ali new stage show 2020 I ha du du

সুচিপত্র:

Anonim

একটি বাশ ফাংশন মূলত কমান্ডের একটি সেট যা বহুবার বলা যেতে পারে। কোনও ফাংশনের উদ্দেশ্য হ'ল আপনাকে আপনার ব্যাশ স্ক্রিপ্টগুলি আরও বেশি পঠনযোগ্য করে তোলা এবং একই কোডটি বারবার লেখা এড়াতে সহায়তা করা।

বেশিরভাগ প্রোগ্রামিং ভাষার তুলনায়, বাশ ফাংশনগুলি কিছুটা সীমাবদ্ধ। এই টিউটোরিয়ালে, আমরা বাশ ফাংশনগুলির বেসিকগুলি কভার করব এবং কীভাবে সেগুলি আপনার শেল স্ক্রিপ্টগুলিতে ব্যবহার করতে হয় তা আপনাকে দেখাব।

বাশ ফাংশন ঘোষণা

ব্যাশ ফাংশন ঘোষণার জন্য সিনট্যাক্সটি খুব সহজ। এগুলি দুটি পৃথক ফর্ম্যাটে ঘোষিত হতে পারে:

  1. প্রথম ফর্ম্যাটটি প্রথম বন্ধনের পরে ফাংশনটির নাম দিয়ে শুরু হয়। এটি পছন্দসই এবং আরও ব্যবহৃত বিন্যাস।

    function_name () { commands }

    একক লাইন সংস্করণ:

    function_name () { commands; }

    দ্বিতীয় ফর্ম্যাটটি ফাংশনটির নামের সাথে function সংরক্ষিত শব্দ দিয়ে শুরু হয়।

    function function_name { commands }

    একক লাইন সংস্করণ:

    function function_name { commands; }

কয়েকটি বিষয় উল্লেখযোগ্য:

  • কোঁকড়া ধনুর্বন্ধনী {} between এর মধ্যে কমান্ড তালিকাটি ফাংশনের মূল অংশ the ফাংশন বডিটি ঘিরে থাকা কোঁকড়ানো ধনুর্বন্ধনীগুলি স্পেস বা নিউলাইন দ্বারা শরীর থেকে পৃথক করা উচিত a কোনও ফাংশন নির্ধারণের ফলে এটি কার্যকর হয় না। কোনও ব্যাশ ফাংশন শুরু করতে কেবল ফাংশনের নামটি ব্যবহার করুন। যখনই শেল স্ক্রিপ্টে ফাংশনটি বলা হয় তখন কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে কমান্ডগুলি কার্যকর করা হয় function ফাংশনটির কোনও কল করার আগে ফাংশন সংজ্ঞা স্থাপন করতে হবে single যখন একক লাইন "কমপ্যাক্ট" ফাংশন ব্যবহার করে একটি সেমিকোলন ; অবশ্যই ফাংশনের শেষ কমান্ডটি অনুসরণ করা উচিত You আপনার ফাংশনটির নাম বর্ণনামূলক রাখতে সর্বদা চেষ্টা করা উচিত।

এটি আরও ভালভাবে বুঝতে, নীচের উদাহরণটি একবার দেখুন:

~ / Hello_world.sh

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

আসুন কোড লাইন লাইন বিশ্লেষণ করুন:

  • লাইন 3 আমরা একটি নাম দিয়ে ফাংশনটি সংজ্ঞায়িত করছি, এবং কোঁকড়ানো ধনুর্বন্ধনী opening এটি ফাংশনটির শরীরের সূচনা চিহ্নিত করে marks লাইন 4 হ'ল ফাংশন বডি। ফাংশন hello_world একাধিক কমান্ড এবং ভেরিয়েবল ডিক্লেয়ারেশন থাকতে পারে hello_world লাইন 5 , ক্লোজিং কোঁকড়ানো বন্ধনী } , hello_world ফাংশনটির hello_world সংজ্ঞায়িত করে। লাইনে আমরা ফাংশনটি সম্পাদন করছি। আপনি যতবার প্রয়োজন ততবার ফাংশনটি সম্পাদন করতে পারেন।

আপনি যদি স্ক্রিপ্টটি চালান, এটি hello, world প্রিন্ট করবে।

ভেরিয়েবলস স্কোপ

গ্লোবাল ভেরিয়েবলগুলি এমন পরিবর্তনশীল যা স্ক্রিপ্টের যে কোনও জায়গা থেকে অ্যাক্সেস পাওয়া যায় না। বাশ-এ, ফাংশনের অভ্যন্তরে ঘোষিত হলেও ডিফল্টরূপে সমস্ত ভেরিয়েবলগুলি বিশ্বব্যাপী হিসাবে সংজ্ঞায়িত হয়।

স্থানীয় ভেরিয়েবলগুলি local কীওয়ার্ড সহ ফাংশন বডির মধ্যে ঘোষণা করা যেতে পারে এবং কেবলমাত্র সেই ফাংশনের অভ্যন্তরে ব্যবহার করা যেতে পারে। বিভিন্ন ফাংশনে একই নামের সাথে আপনার স্থানীয় ভেরিয়েবল থাকতে পারে।

ব্যাশে ভেরিয়েবল স্কোপ কীভাবে কাজ করে তা আরও ভালভাবে বর্ণনা করার জন্য আসুন একটি উদাহরণ বিবেচনা করুন:

~ / Variables_scope.sh

#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"

স্ক্রিপ্টটি দুটি গ্লোবাল ভেরিয়েবল ভেরিয়েবল এবং var2 সংজ্ঞায়নের মাধ্যমে শুরু হয়। তারপরে এমন একটি ফাংশন যা একটি স্থানীয় ভেরিয়েবল var1 সেট করে এবং গ্লোবাল ভেরিয়েবল var2 সংশোধন করে।

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

উপরের আউটপুট থেকে, আমরা এই সিদ্ধান্তে পৌঁছাতে পারি:

  • আপনি যদি বিদ্যমান গ্লোবাল ভেরিয়েবলের একই নামের সাথে ফাংশন বডির ভিতরে একটি স্থানীয় ভেরিয়েবল সেট করেন তবে এটির বৈশ্বিক ভেরিয়েবলের চেয়ে অগ্রাধিকার থাকবে lo গ্লোবাল ভেরিয়েবলগুলি ফাংশনটির মধ্যে থেকে পরিবর্তন করা যেতে পারে।

রিটার্ন মান

"রিয়েল" প্রোগ্রামিং ল্যাঙ্গুয়েজে ফাংশনগুলির বিপরীতে, বাশ ফাংশনগুলি যখন ডাকে তখন আপনাকে কোনও মান ফেরত দিতে দেয় না। যখন কোনও বাশ ফাংশন সম্পূর্ণ হয়, তখন তার রিটার্ন মানটি ফাংশনে মৃত্যুদন্ড কার্যকর করা শেষ স্টেটমেন্টের স্থিতি, সাফল্যের জন্য 0 এবং ব্যর্থতার জন্য 1 - 255 পরিসরে শূন্য-দশমিক সংখ্যার হয়।

রিটার্নের স্ট্যাটাসটি return কীওয়ার্ড ব্যবহার করে নির্দিষ্ট করা যেতে পারে, এবং এটি ভেরিয়েবল assigned এ নির্ধারিত হয় $? return স্টেটমেন্টটি ফাংশনটি সমাপ্ত করে। আপনি এটিকে ফাংশনের প্রস্থান স্থিতি হিসাবে ভাবতে পারেন।

~ / Return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

একটি ফাংশন থেকে প্রকৃতপক্ষে একটি স্বেচ্ছাসেবী মান ফেরত দিতে, আমাদের অন্যান্য পদ্ধতি ব্যবহার করা দরকার। সবচেয়ে সহজ বিকল্পটি হ'ল গ্লোবাল ভেরিয়েবলের জন্য ফাংশনের ফলাফল নির্ধারণ করা:

~ / Return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

আরেকটি, একটি ফাংশন থেকে মান ফেরত দেওয়ার আরও ভাল বিকল্পটি হল নীচে দেখানো মত ইকো বা stdout ব্যবহার করে stdout মান প্রেরণ করা:

~ / Return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

func_result মেসেজটি প্রিন্ট করবে এমন ফাংশনটি সম্পাদন করার পরিবর্তে, আমরা func_result $() কমান্ড সাবস্টিটিউশনটি ব্যবহার করে ফাংশন আউটপুট func_result ভেরিয়েবলকে বরাদ্দ করছি। পরিবর্তনশীল পরে প্রয়োজন হিসাবে ব্যবহার করা যেতে পারে।

বাশ ফাংশনে আর্গুমেন্টগুলি পাস করা

ব্যাশ ফাংশনে কোনও সংখ্যক আর্গুমেন্ট পাস করার জন্য এটিকে কোনও স্পেস দ্বারা আলাদা করে ফাংশনের নামের পরে ডানদিকে রাখুন। এতে যুক্তিগুলির ফাঁক দিয়ে ফাঁকে ফাঁকে ফাঁকে এড়াতে যুক্তিগুলিকে ডাবল-কোট করা ভাল অনুশীলন।

  • পাস হওয়া প্যারামিটারগুলি হ'ল function $1 , $2 , $3 $n , ফাংশনের নামের পরে প্যারামিটারের অবস্থানের সাথে সম্পর্কিত The $0 ভেরিয়েবলটি ফাংশনটির নামের জন্য সংরক্ষিত থাকে The $# ভেরিয়েবলটি পজিশনাল পরামিতি / আর্গুমেন্টের সংখ্যাকে ধারণ করে ফাংশন। $* এবং $@ ভেরিয়েবলগুলি ফাংশনে প্রেরিত সমস্ত অবস্থানগত পরামিতি / আর্গুমেন্ট ধারণ করে।
    • ডাবল কোট করা হলে, "$*" স্থান দ্বারা পৃথক একক স্ট্রিংয়ে প্রসারিত হয় (আইএফএসের প্রথম অক্ষর) - "$1 $2 $n" । ডাবল উদ্ধৃতি দেওয়া হলে, "$@" পৃথক স্ট্রিংগুলিতে প্রসারিত হয় - "$1" "$2" "$n" । যখন ডাবল কোট করা হয় না, $* এবং $@ একই হয়।

এখানে একটি উদাহরণ:

~ / Passing_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

উপসংহার

একটি বাশ ফাংশন একটি বিশেষ ক্রিয়াকলাপ সম্পাদন করার জন্য ডিজাইন করা পুনরায় ব্যবহারযোগ্য কোডের একটি ব্লক। একবার সংজ্ঞায়িত হয়ে গেলে, স্ক্রিপ্টের মধ্যে ফাংশনটিকে একাধিকবার বলা যেতে পারে।

আপনি লম্বা কমান্ডের জন্য একটি স্মরণীয় শর্টকাট কমান্ড তৈরি করতে কীভাবে ব্যাশ ফাংশনটি ব্যবহার করবেন সে সম্পর্কেও আপনি পড়তে চাইতে পারেন।

বাশ টার্মিনাল