বাশ স্ক্রিপ্ট ব্যবহার করে কীভাবে ডিএনআই চিঠিটি গণনা করতে হবে তা শিখুন

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

প্রথমত, আমাদের করতে হবে কিভাবে বুঝতে সাবস্ট্রিংস, যা, যে কোনও ভাষায়, এর সম্ভাবনা রয়েছে একটি স্ট্রিং অংশ ফিরে শৃঙ্খলা, অবস্থান এবং বিভাগের দৈর্ঘ্যের ইঙ্গিত থেকে। আসুন এই আচরণের একটি উদাহরণ তাকান। আমরা সঙ্গে আমাদের স্ক্রিপ্ট তৈরি

$ touch prueba_substring
$ 

তারপরে আমরা আপনার পছন্দসই সম্পাদক সহ নিম্নলিখিত কোড যুক্ত করব। টার্মিনাল মোডে আমার পছন্দের সম্পাদকটি মেসিডিট। তবে ইদানীং দেখছি ন্যানো শক্তি বাড়ছে gain

 
#!/usr/bin/env bash 
# Demo comportamiento de substrings en Bash 
# Pedro Ruiz Hidalgo 
# version 1.0.0 
# Febrero 2017 

ret="\n" 
CADENA="siempre uso Linux con Ubuntu y Ubunlog, claro!" 
#      "0123456789012345678901234567890123456789012345" 
#      "          1         2         3         4     " 
# (usa la regla para medir los caracteres) 

echo -e $ret ${CADENA:12} 
echo -e $ret ${CADENA:12:5} 
echo -e $ret "Aprendo en ${CADENA:31:7}" 
exit 0 

অনুমতিগুলি যুক্ত করা এবং এটি কার্যকর করা:

$ chmod +x prueba_substring
$ ./prueba_substring
$

এটি হওয়া উচিত, যদি সবকিছু ঠিকঠাক হয় তবে নিম্নলিখিত ফলাফলটি ফিরে আসা উচিত:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

সাবস্ট্রিং অপারেশন

আপনি উপরের দেখতে পারেন আমি 13 থেকে 15 লাইন হাইলাইট করেছি স্ক্রিপ্ট থেকে এবং পদক্ষেপ আপনার কোড ব্যাখ্যা করুন. প্রতিধ্বনি সঙ্গে সঙ্গে "-e" পরামিতি দেখান পরবর্তী লাইন অক্ষর, আমরা এই চরিত্রটি সংজ্ঞায়িত করেছি line রেখা এবং ভেরিয়েবলকে নির্ধারিত to ret ».

লাইন 13: আমি সাবস্ট্রিংটি দেখায় (সাবস্ট্রিং) CHAIN ​​ভেরিয়েবলের, 8 লাইনে বর্ণিত, অবস্থান থেকে 12. সর্বদা অবস্থান 0 থেকে গণনা শুরু করুন.

লাইন 14: থেকে CHAIN ​​ভেরিয়েবলের 12-এর অবস্থান, আমি 5 এর একটি অংশ দেখি। যেহেতু আপনি যাচাই করবেন এটি এর সাথে সম্পর্কিত "লিনাক্স" সাবস্ট্রিং.

লাইন 15: আমি একটি রচনা নতুন স্ট্রিং কোটে আবদ্ধ CHAIN ​​ভেরিয়েবলের একটি সাবস্ট্রিং দিয়ে চালিয়ে যেতে আমি «আমি শিখেছি as হিসাবে শুরু করি 31 এর অবস্থান থেকে 7 টি বিভাগ নিয়ে taking: এটি অনুরূপ «Ubunlog».

পোস্টব্যাক ফাংশন

বাশের সাথে রিটার্ন মেকানিজম "রিটার্ন" কমান্ড দ্বারা উত্পাদিত হয়, যদিও, যখন আমরা এটি বাশ ভেরিয়েবলের সাথে মেলে ফেলতে হয়, এটি একটি "অদ্ভুত" প্রক্রিয়া প্রয়োগ করে, যা আপনাকে অভ্যস্ত করতে হবে। আসুন নীচের উদাহরণটি দেখুন:

#!/usr/bin/env bash

function suma(){
  local a=$1
  local b=$2
  return $(( $a + $b ))
}

suma 12 23
retorno=$?
echo $retorno

বাশগুলিতে ব্যাবহার করার আগে ফাংশনগুলি সর্বদা সংজ্ঞায়িত করতে হবেসুতরাং, পরে শেবাং আমরা লাইন 4 এ ফাংশন যোগফল ঘোষণা করি আমরা পরামিতিগুলির প্রথম অ্যাসাইনমেন্টটি «স্থানীয় of মাধ্যমে সংজ্ঞায়িত করি ($ 1) পরিবর্তনশীল "ক" তে। 5 লাইন, যেখানে আমরা ভ্যারিয়েবল «বি to এ দ্বিতীয় প্যারামিটার a ($ 2) নির্ধারণ করি। লাইনের নয়টিতে আমরা দুটি পরামিতি সহ যোগফলকে কল করব যা এর মধ্যে বর্ণিত পদ্ধতি দ্বারা রূপান্তরিত হবে ভেরিয়েবল "এ" এবং "বি" এবং "রিটার্ন" দিয়ে আমরা এগুলিকে যোগ করিহিসাবে সহজেই ফাংশন জন্য নির্দেশাবলী দেখা যাবে।

আমরা এর মধ্যে পরিবর্তনশীল "রিটার্ন" বরাদ্দ করি লাইন 10 ফাংশন যোগফল কার্যকর করার ফলাফল.

পড়াশোনা এবং বোঝার পরে যা উপায় ভেরিয়েবলগুলিতে মানগুলি এবং অ্যাসাইনমেন্টের অনুশীলন করা হয় এর আমাদের প্রোগ্রাম দেখতে যান বাশের সাথে ডিএনআই অক্ষরের গণনা.

বাশের সাথে ডিএনআই বর্ণগুলি গণনা করার জন্য স্ক্রিপ্ট

#!/usr/bin/env bash

nl="\n"

LETRAS="TRWAGMYFPDXBNJZSQVHLCKEO"
NORMAL=0
ERROR=66

if [ $# -lt 1 ];
then
	echo -e "$nl Cálculo DNI, introduce número$nl"
	read -r ndni
	[ -z "${ndni//[0-9]}" ] && [ -n "$ndni" ] || echo "Sólo números" && exit $ERROR
else
	ndni=$1
fi

modulo ()
{
	return $(( $ndni  % 23 ))
}

modulo ndni
mod=$?
echo $ndni-${LETRAS:$mod:1}
exit $NORMAL

La আমাদের ডিএনআই এর চিঠি অনুরূপ সংখ্যা মডিউল 23। এই, আমরা 23 দ্বারা সংখ্যা বিভক্ত y পরিবর্তে ভাগফল দিকে তাকানোর, আমরা বিভাগের বাকি পর্যবেক্ষণ। অন্য শব্দ, মত 23 দ্বারা বিভাজ্য সংখ্যাগুলি শূন্য দেবে, যে চিঠি এটি «টি correspond, এই থেকে অবস্থান 0, যেমন আমরা উপরে স্ক্রিপ্টে দেখেছি, সমস্ত সাবস্ট্রিংগুলি শূন্য থেকে গণনা শুরু করে। এটি হল, মডিউলটির সাথে আমরা সর্বদা সংখ্যাগুলি অর্জন করব 0 (বর্ণ "টি") এবং 22 এর মধ্যে (অক্ষর "ও")। অন্যান্য ভাষায় যেমন বাশ-তেও মডিউলটি শতাংশ অপারেটর «% of দ্বারা প্রাপ্ত হয়.

মধ্যে লাইন 5 আমরা বর্ণগুলি সংজ্ঞায়িত করি আপনার অর্ডার এটা অবশ্যই, অর্ডার পরিবর্তন করা যায় না নির্ভরযোগ্য ফলাফলের জন্য। লাইনের যদি 9 আমরা জিজ্ঞাসা করছি স্ক্রিপ্ট কল করার সময় পরামিতি হিসাবে একটি নম্বর ছিল। যদি কোনও প্যারামিটার না থাকে, আমরা 11 থেকে 13 লাইন থেকে নির্দেশাবলীর সাহায্যে কীবোর্ডের মাধ্যমে এটির জন্য অনুরোধ করি line 15 লাইনটিতে অর্ডার গণনা করার জন্য যদি স্ক্রিপ্টটিকে একটি নম্বর দিয়ে ডাকা হত, এটি এই পরামিতিটি ভেরিয়েবল s ndni assign কে বরাদ্দ করে »

23 লাইনে আমরা প্যারামিটারের মাধ্যমে মডুলো ফাংশনটি উল্লেখ করি ভেরিয়েবল «ndni», হয় এটি ব্যাশের পরামিতি হিসাবে সংগ্রহ করা হয়েছে, বা ইনপুট হিসাবে কীবোর্ডের মাধ্যমে। লাইন 24-এ ফাংশনের রিটার্নটি ভেরিয়েবল «মোড» এ নির্ধারিত হয় » 25 মিটার লাইনেআমরা সংখ্যা, একটি ড্যাশ এবং মডিউল এবং স্ট্রিংয়ের গণনা অনুসারে অবস্থানের সাথে সংশ্লিষ্ট চিঠিটি প্রদর্শন করি.

আমাদের ডিএনআই স্ক্রিপ্ট পরীক্ষা করা হচ্ছে

$ ./dni 12345678
12345678-Z

ও ভালো,

$ ./dni

 Cálculo DNI, Introduce número

আমাদের সমস্ত স্ক্রিপ্টগুলিতে লেখকের জন্য একটি "-a" প্যারামিটার এবং সাহায্য এবং বাক্য গঠনের জন্য অন্য "-h" অন্তর্ভুক্ত করা উচিত। আমরা পূর্ববর্তী নিবন্ধগুলিতে যেমন দেখেছি বা কোডটিকে আরও জটিল করা এড়াতে আমি এটি আপনার কাছে রেখেছি।
আমি আশা করি এবং আশা করি যে এই নিবন্ধটি আপনার আগ্রহী হয়েছে।


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

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

*

*

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

  1.   ওমর বিএম তিনি বলেন

    হ্যালো, কেউ কি আমাকে সাহায্য করতে পারেন? আমার পুরানো ডেস্কটপ কম্পিউটারে লুবুন্টু ইনস্টল করা দরকার তবে এটি আমাকে ইউএসবির মাধ্যমে ইনস্টল করতে দেয় না এবং ডিভিডি ড্রাইভ ক্ষতিগ্রস্থ হয়, আমি কেবল ইনস্টল করতে চাই http://www.plop.at উবুন্টু 16.04 এলটিএসে তবে আমি কীভাবে এটি করব তা জানি না। ধন্যবাদ

    1.    পেড্রো রুইজ হিডালগো স্থানধারক চিত্র তিনি বলেন

      ওমর

      যেমনটি আপনি উল্লেখ করেছেন, পরিস্থিতি খুব আশাব্যঞ্জক নয়: ইউএসবি অনুমোদিত নয় এবং ডিভিডি ড্রাইভ ক্ষতিগ্রস্থ হয়েছে। তবে আপনি মন্তব্যও করেছেন যে "কম্পিউটারটি পুরানো", তার মানে আপনার একটি নতুন কম্পিউটার রয়েছে। আপনার কর্মক্ষম কম্পিউটার থেকে ইনস্টলেশনটি একটি হার্ড ড্রাইভে স্থাপন করার চেষ্টা করুন এবং সেই ড্রাইভ থেকে এটি ইনস্টল করার চেষ্টা করুন।

      শুভেচ্ছা

    2.    সিজার দেলবা তিনি বলেন

      আপনার কি কম্পিউটার এবং অপসারণযোগ্য বাক্স রয়েছে? অপসারণযোগ্য ইউএসবি বক্সে পুরানো কম্পিউটারের হার্ড ড্রাইভটি মাউন্ট করুন এবং ইনস্টলেশন ডিস্কটি শুরু করুন।
      লিনাক্স এবং ইউনিক্স বুট স্তরের হার্ডওয়্যারটিকে বিবেচনা করে না, তাই আপনি লিনাক্স ইনস্টল করে ডিস্কটি ফিরিয়ে রাখতে পারেন।

    3.    ওমর বিএম তিনি বলেন

      আপনাকে অনেক ধন্যবাদ আমি আপনাকে বলছি যে আমি যা করেছি তা একই অপারেটিং সিস্টেমের মধ্যে উবুন্টু 16.04 থেকে লুবুন্টু 16.04 এ যেতে হয়েছিল এবং তাই আমার পুরানো কম্পিউটারটি কলম্বিয়া থেকে শুভেচ্ছা জানিয়ে ভালভাবে কাজ করছিল।