সন্তুষ্ট করার পরে প্রয়োজনীয়তা জন্য বাশ স্ক্রিপ্টগুলি চালাতে সক্ষম হবেন, এবং বুঝতে কিভাবে ফাংশন সংজ্ঞায়িত করতে হয়, কিভাবে শিখব ব্যাশ ফাংশনে রিটার্ন মানগুলি। এর জন্য আমরা বাশে একটি ছোট "তবে শক্তিশালী" প্রোগ্রাম তৈরি করতে যাচ্ছি ডিএনআই-এর অক্ষর গণনা করুন। আমার কাছে সুসংবাদ রয়েছে: বাশও পারেন উইন্ডোজ 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: এটি অনুরূপ "উবুনলগ".
পোস্টব্যাক ফাংশন
বাশের সাথে রিটার্ন মেকানিজম "রিটার্ন" কমান্ড দ্বারা উত্পাদিত হয়, যদিও, যখন আমরা এটি বাশ ভেরিয়েবলের সাথে মেলে ফেলতে হয়, এটি একটি "অদ্ভুত" প্রক্রিয়া প্রয়োগ করে, যা আপনাকে অভ্যস্ত করতে হবে। আসুন নীচের উদাহরণটি দেখুন:
#!/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" অন্তর্ভুক্ত করা উচিত। আমরা পূর্ববর্তী নিবন্ধগুলিতে যেমন দেখেছি বা কোডটিকে আরও জটিল করা এড়াতে আমি এটি আপনার কাছে রেখেছি।
আমি আশা করি এবং আশা করি যে এই নিবন্ধটি আপনার আগ্রহী হয়েছে।