বাশে ফাংশন কীভাবে ব্যবহার করবেন

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

আমাদের প্রস্তাবিত স্ক্রিপ্টে আমরা বাশ ভাষাটি কোনও ফাইলের নাম অনুসন্ধান করে সন্ধান করতে ব্যবহার করি। এই জন্য আমরা ব্যবহার করব কমান্ড সন্ধান করুন তবে উল্লিখিত স্ক্রিপ্টের পূর্বে নির্ধারিত ফাংশনগুলির সাহায্যে আপনাকে বাশের একটি বিশেষত্ব বা সীমাবদ্ধতা ધ્યાનમાં নিতে হবে যা সমস্ত ভাষায় উপস্থিত নেই: একটি ফাংশন কল করতে এটি সংজ্ঞায়িত করা আবশ্যক পূর্বে।

ফাংশন সংজ্ঞায়িত করুন

ফাংশন সংজ্ঞায়নের দুটি উপায় রয়েছে: ফাংশন ঘোষণার সাথে বা ছাড়াই:

function nombre_funcion () 
{
    # codigo
}

বা এটি অন্যটি, যা আমি ব্যবহার করি এটি আপনি পরে দেখবেন।

nombre_funcion ()
{
    # codigo
}

এছাড়াও প্যারামিটারগুলি পাস এবং ফলাফলগুলি ফেরত দেওয়ার জন্য বাশ একটি পদ্ধতিও সরবরাহ করে। যা আমরা ভবিষ্যতের নিবন্ধগুলিতে দেখতে পাব।

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
 echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}

ayuda ()
{
 echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
} 

noparams ()
{
 echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
 read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
 if [[ $REPLY =~ ^[Ss]$ ]];
    then
       echo ""
       ayuda
 fi
}

nodir ()
{
 echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];
then 
 ayuda
 exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];
then 
 autor
 exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
 noparams
else
 if [ -d $DIRECTORIO ];
 then
 echo ""
 find $DIRECTORIO -name $PATRON*
 echo ""
 exit $?
 else 
 nodir 
 exit EXIT_BAD
 fi
fi


স্ক্রিপ্ট বিশ্লেষণ

সংজ্ঞা

বাশ জন্য প্রতিটি প্রক্রিয়া সফলভাবে সমাপ্ত হতে হবে একটি সংকেত হিসাবে কোড "0"। 12 এবং 13 লাইনগুলি পরিচালনা করা ত্রুটি কোডগুলি সংজ্ঞায়িত করে সাফল্যের জন্য EXIT_OK y ব্যর্থতা থেকে প্রস্থান করার জন্য EXIT_BAD.

15 এবং 16 লাইনগুলিতে, PATTERN এবং DIRECTORY ভেরিয়েবলগুলি প্রথম ($ 1) এবং দ্বিতীয় ($ 2) পরামিতিগুলি নির্ধারণ করা হয় যা স্ক্রিপ্টের নামের পরে কমান্ড লাইনে প্রদর্শিত হয়, যেমন আমরা এটি সম্পাদন করার পরে পরে দেখব।

মধ্যে লাইন 18 আমরা আমাদের প্রথম ফাংশন তৈরি। «লেখক called নামক ফাংশনটি প্রদর্শন করে স্ক্রিপ্ট রচয়িতা যখন আমরা এটিকে "-a" যুক্তি দিয়ে কল করি যেমন 50 লাইনে 54 if XNUMX লাইনে দেখা যায়। যুক্তি "-এবং" 23 লাইন থেকে od line n enc এনকোডিং করে «পরবর্তী লাইন of এর অনুক্রমটি প্রদর্শন করতে দেয়.

নোপারামে কল (লাইন 28 ~ 37) ইভেন্টগুলি পরিচালনা করার দায়িত্বে রয়েছে যখন স্ক্রিপ্টটি কোনও পরামিতি ছাড়াই কল করা হয় occur আমরা দেখছি, নতুন লাইন কোডগুলির মধ্যে সঠিকভাবে আবদ্ধ, একটি বার্তা নির্দেশ করে যে স্ক্রিপ্টটি দুটি পরামিতি দিয়ে সম্পাদন করা উচিত, তারপরে একটি বিকল্প (লাইন 31) ব্যবহার করার জন্য প্রদর্শিত হবে পড়া এটি আপনাকে সহায়তা দেখাতে চাইলে "এস" বা "এস" টিপতে অনুরোধ জানায়। ৩২ লাইনে আমরা আক্ষরিকভাবে বলি: 'যদি উত্তর হয় (যা ভেরিয়েবলে আমাদের কাছে আসে PL উত্তর দিন) এর মধ্যে এমন কোনও অক্ষর রয়েছে যা বড়হস্ত বা ছোট হাতের অক্ষরে থাকে ', তারপরে (লাইন 33) একটি খালি লাইন দেখায় (লাইন 34) এবং সহায়তা ফাংশন সম্পাদন করে (লাইন 23 ~ 26)

নোডির ফাংশন (লাইন 39 ~ 42) কার্যকর করা হবে যখন আমরা সনাক্ত করি যে যেখানে অনুসন্ধানের চেষ্টা করা হচ্ছে সেই ডিরেক্টরিটি বিদ্যমান নেই।

কার্যকারিতা

এই সঙ্গে আমরা ইতিমধ্যে আছে সমস্ত প্রয়োজনীয় ফাংশন সংজ্ঞায়িত আমাদের প্রোগ্রামটি কার্যকর করতে, যা আসলে লাইন 44-এ শুরু হয়, স্ক্রিপ্টটি যে পরামিতিগুলির প্রথমটি "-h" পেয়েছে তা পরীক্ষা করে। স্বাভাবিক সমাপ্তির ইঙ্গিত দিয়ে প্রস্থান করা হয়.

যদি প্যাটার্ন (লাইন 15-তে বর্ণিত প্রথম প্যারামিটার) "-a" হয় তবে লেখক "-h" বিকল্পের জন্য পূর্ববর্তী অনুচ্ছেদে বর্ণিত একই পদ্ধতি অনুসরণ করে প্রদর্শিত হয়।

লাইনে 56 এটি নিয়ন্ত্রিত হয় যে দুটি প্যারামিটারের চেয়ে কম আমাদের কাছে পৌঁছেছেএই ক্ষেত্রে, নোপারামস ফাংশনটি কার্যকর করা হয়, তারপরে, লাইনের 60-তে আমরা সন্ধান করি যে ডিরেক্টরিতে আমরা অনুসন্ধান করতে চাই তা যদি বিদ্যমান থাকে, যদি এটি বিদ্যমান থাকে তবে একটি খালি লাইন প্রদর্শিত হবে কমান্ড সন্ধান করুন যে ডিরেক্টরিতে আমরা অনুসন্ধানটি চালিয়ে যেতে চাই তার ঠিকানার সাথে প্যাটার্ন অনুসরণ করা হবে (আমরা যে ফাইলটির সন্ধান করছি তার নামের শুরু) একটি নতুন ফাঁকা রেখা এবং এর মাধ্যমে প্রস্থান $? আমরা আমাদের স্ক্রিপ্টের আউটপুট সন্ধান দ্বারা উত্পাদিত ফলাফল হস্তান্তর। যদি শর্ত থাকে ডিরেক্টরি অস্তিত্ব মিথ্যা (লাইন 67) আমরা নোডির ফাংশনে এবং একটি কল করি আমরা অস্বাভাবিক সমাপ্তির ইঙ্গিত দিয়ে প্রস্থান করি.

কার্যকর করা এবং পরীক্ষা করা

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En বাশ সম্পর্কে নিম্নলিখিত নিবন্ধগুলি আমরা জন্য প্রক্রিয়া দেখতে পাবেন ফাংশনগুলিতে পরামিতি ব্যবহার করুনআমরা কীভাবে করব তাও দেখব রিটার্ন ডেটা স্পষ্ট একই থেকে

আমি আশা করি এবং আশা করি যে এই পোস্টটি আপনার জন্য কার্যকর হয়েছে।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   জোসিয়া তিনি বলেন

    হ্যালো,
    খুব আকর্ষণীয় এবং খুব পরিষ্কার।
    শুধু একটি নোট; একটি 68I লাইনে ভেরিয়েবলের EXIT_BAD এর সামনে অনুপস্থিত।
    আমি আপনার নিবন্ধগুলির সাথে নিশ্চিতভাবে শিখতে থাকব।