Shell Scripting වල ඇරඹුම

අපි පාඩම් දහයක් පුරාවට බොහෝ දේවල් ඉගෙනගත්තා. මේ පාඩම් ටික අනුගමනය කළ, ප්‍රායෝගිකව පුහුණු වුණ, නව දැණුම එකතු කරගත්ත සහ දැණුම සොයා ගිය කෙනෙක්ට Terminal එක කියන්නෙ දැන් හුරු පුරුදු තැනක්. දැන් ඉස්සර වගේ කළු පසුබිමේ සුදු අකුරු වලට බිය නොවී ඒවට ආදරේ කරන්න පුරුදු වෙන කාලෙ. GUI එකට වඩා CLI එකේ බලසම්පන්න කම දැනෙන්න ඕන කාලෙ.

මේ හුරුපුරුදු කම වැඩි කරන්න අපි අද මුලපුරන්නෙ බොහොම වැදගත් දේකට. මෙච්චර දවස් අපි කළේ මෙතනට එන්න පාර හැදුව එක. එහෙනම්, අද අපි අපේ පළමු Shell Script එක ලියමු. එහෙනම්, ඔන්න අපි පාඩම පටන්ගත්තා.


Shell Script එකක් run කරවන්න නම්, පහත දේවල් අවශ්‍ය වෙනවා.

  1. Text editor එකක් - මේකට අපිට පුළුවන් nano වගේ CLI text editor එකක් පාවිච්චි කරන්න. එහෙම නැත්නම්, අති විශාල ප්‍රමාණයක් තියෙන Graphical text editors වලින් එකක් භාවිතා කරන්න පුළුවන්. Gedit, FeatherPad, Geany, LeafPad වගේ සරල editor එකක් හෝ, Atom, VSCode වගේ IDE එකක් වුණත් මේකට පාවිච්චි කරන්න පුළුවන්. මේවයින් තමයි script එක ලියන්නෙ.
  2. Script එක ලිව්වට පස්සෙ, ඒ script file එකට execute permission දෙන්නත් ඕන. Permission දෙන හැටි අපි කලින් බොහොම සවිස්තරාත්මකව සාකච්ඡා කළා. සරලව, අපිට පුළුවන් මෙන්න මෙහෙම අදාළ script file එකට execute permission ලබාදෙන්න. chmod u+x scriptname
  3. අන්තිමේ දි අපි ලියාගත්ත script එක execute කරන්න ඕන. ඒකට මේ පහත දැක්වෙන ක්‍රම වලින් එකක් අනුගමනය කරන්න පුළුවන්.

bash scriptname
sh scriptname
./scriptname
.scriptname (subshell එකකට නොයා දැන් තියෙන shell එකේම script එක run කරවන්න නම්.)

පළමු shell script එක ලියමු.

මම මුලින්ම nano editor එකේ උදව්වෙන් අලුත් script එකක් ලියන්න පටන්ගත්තා.

nano first.sh

ඊට පස්සෙ, මම script එක ලියන්න පටන්ගත්තා. මුලින්ම මම shell එක මොකක්ද කියලා හඳුන්වා දුන්නා, ඒ මෙන්න මෙහෙම.

#!/usr/bin/bash

මෙතන තියෙන්නෙ path එකක්. Bash shell එකේ binary files save කරලා තියෙන path එක. මේක distro එකෙන් distro එකට වෙනස් වෙන්න පුළුවන්. ඒ නිසා, මේ path එක හඳුනගන්න පුළුවන් ලේසිම ක්‍රමය තමයි මෙන්න මේක run කරවන එක.

whereis bash

එතකොට එන output එකේ, bin directory එක සහිත මුල් path එක තමයි අපිට ඕන කරන්නෙ. #! සලකුණු දෙකෙන් පස්සෙ ඔයා හොයාගත්ත path එක ඇතුළත් කරගන්න.

ඊළඟට මම ලිව්වා

echo "Hello World"

කියලා. ඒකෙන් වෙන්නෙ Hello World කියන වචන දෙක screen එකට print වෙන එක.

ඊට පස්සෙ file එක save කරගන්න ඕන. මම පාවිච්චි කළේ nano editor එක නිසා මම ctrl + x ඔබලා y අකුර ඔබලා Enter එබුවා. එතකොට ඔයාගෙ script එක ඔයාගෙ home directory එකේ save වෙනවා.

ඊළඟට මම chmod u+x first.sh කියන කමාන්ඩ් එකෙන් script එක execute වෙන්න ඕන කරන permission ලබා දුන්නා. (මේකට octal numbers ක්‍රමවේදය පාවිච්චි කරන්න පුළුවන්. අපි කලින් ඒවා සාකච්ඡා කළානෙ. chmod 755 first.sh වලිනුත් මේක කරගන්න පුළුවන්.)

අන්තිමේ අපි මේ script එක run කරවමු. ඒකට කරන්න තියෙන්නෙ මෙන්න මේ සරල ක්‍රමවේදය අනුගමනය කරන එක.

./first.sh

මෙන්න මගේ output එක.

Shell Programming වලදී භාවිතා වන දේ.

  • Comments & Variables
  • Expressions
    Arithmetic
    Conditional
    *Flow Controlling Structures
    Branching Structures
    Looping Structures

මෙන්න මේවා ගැන තමයි අපි ඉස්සරහට කතා කරන්නෙ. අද අපි comments ගැන, Variables ගැන සහ Expressions යටතේ තියෙන Arithmetic Expressions ගැන සාකච්ඡා කරමු.

Comments

Comments වලින් අපි බලාපොරොත්තු වෙන්නෙ අපේ script එක වෙන කෙනෙක්ට හෝ තමන්ටම පසුව බලලා තේරුම්ගැනීම පහසු කරවීම. නැත්නම් අපේ script එක බලන කාටවත් තේරුම්ගන්න බැරි බූත script එකක් වෙනවා. එහෙම දේවල් අපි කරන්නෙ නෑ. අන්න ඒ නිසා, බලන ඕනම දැනුමැති කෙනෙක්ට අපේ script එක තේරෙන විදියට අපි අවශ්‍ය තැන් වලදි comments භාවිතා කරමු.

කමෙන්ට්ස් දාන්න අපි පාවිච්චි කරන්නෙ # සංකේතය. පළමු line එකේ අපි දාන # එක හැරෙන්න, අනික් හැම # එකකින් පටන්ගන්න line එකක්ම shell එකින් මඟහරිනවා.

#This is a comment

Comments ගැන එපමණයි.

Variables

Variables නැත්නම් විචල්‍යයන් ගැන අපි මීට කලිනුත් පොඩි හැඳින්වීමක් කළා. අද අපි variables ප්‍රායෝගිකව භාවිතා කරමු.

අපි editor එකකට නොයා, දැනට සාමාන්‍ය terminal එක භාවිතා කරලා variables practice කරමු.

Variable එකකට නමක් සහ අගයක් තියෙනවා. උදාහරණයක් විදියට

name=Prabhash

කියන එක ගන්න පුළුවන්. ඔයත් මේ කමාන්ඩ් එක try කරන්න. මේකෙන් අපිට පුළුවන් name කියන variable එකට Prabhash කියන නම/වචනය assign කරන්න. අපිට පස්සෙ මේ variable name එක පාවිච්චි කරලා මේ අපි assign කරපු වචනය access කරන්න පුළුවන්.

echo $name

මේ කමාන්ඩ් එක run කරලා ඔයා assign කරපු වචනය බලාගන්න පුළුවන්. Echo කමාන්ඩ් එකෙන් වෙන්නෙ යමක් terminal එකේ display කරන එක බව දැන් ඔයාලා දන්නවනෙ.

මෙතන අපි $ ලකුණ භාවිතා කරන්නෙ name කියන්නෙ variable එකක් බව shell එකට දැණුම් දෙන්නයි. $ ලකුණ නැත්නම් මේ කමාන්ඩ් එකේ output එක name විදියටම print වෙනවා. $ ලකුණ නැතුවත් try කරන්න.

ඊළඟට අපි බලමු වචන එකකට වඩා වැඩි ගාණක් variable එකකට assign කරන හැටි.

fullname = "Prabhash Jayaweera"

හොඳට මතක තියාගන්න ඕන, වචන එකකට වඩා වැඩියෙන් variable එකකට assign කරද්දි double quotations නොහොත් පෙරලි කොමා භාවිතා කළ යුතුයි. නැත්නම් එන්නෙ error එකක්.

අපිට පුළුවන් command output එකක් variable එකකට ආදේශ කරන්න. මෙන්න මේ විදියට.

මේකෙදි මතක තියාගන්න, කමාන්ඩ් එක දෙපැත්තෙන් ` මෙන්න මේ සංකේතය භාවිතා කරන්න. මේකට backtick එක නොහොත් grave එක කියලත් කියනවා. නැත්නම් error එකක් එන්න පුළුවන්.

ඒ වගේම, අපිට පුළුවන් command එකක් වුණත් variable එකක් ඇතුළට දාන්න. ඒ මෙන්න මෙහෙමයි.

මෙතනදි, cat file1.txt කියන කමාන්ඩ් එක catmyfile කියන variable එකේ ගබඩා වීම සිදු වෙනවා. Variable එක call කිරීමෙන් අදාළ command එක run කරවන්න පුළුවන්.

Variables export කරන හැටි

අපි කලින් සාකච්ඡා කළා, script එකක් run වෙද්දි subshell එකක් හදාගන්න බව. මෙන්න මේ subshells අතර variables access කරන්න නම්, අපි variables export කරගන්න ඕන.

මේක test කරන්න නම් අපිට shell scripts දෙකක් ලියන්න වෙනවා. මතක ඇතුව script file දෙකටම execute permission දීලා කලින් වගේම සූදානම් වෙන්න. හොඳයි අපි ට්‍රයි කරලා බලමු.

මම මුලින්ම first.sh කියන නමින් script file  එකක් හදනවා. ඒකෙ මෙන්න මේ විදියට ලියනවා.

මෙතනදි, මම oursite කියන variable එකට Android Wedakarayo කියන value එක assign කරලා ඒ variable එක export කරනවා. ඊට පස්සෙ ./second.sh කියන්නෙ මගේ ඊළඟ script ෆයිල් එක call කරන command එක.

මම second.sh කියලා තව script file එකක් හදලා ඒකට මෙන්න මෙහෙම content එකක් දානවා.

මේකෙන් වෙන දේ තේරෙනවනෙ, අපි export කරපු variable එක print කරන එක තමයි මෙතනදි වෙන්නෙ. මම මේකත් save කරලා, first.sh කියන script එක run කරවනවා.

දැන් තේරෙන්න ඇතිනෙ, first.sh කියන script එකේ අපි හැදුව variable එක second.sh එකේදි access කරලා ඒක print කරගත්තා. මෙතනදි වුණේ subshell අතර දත්ත හුවමාරුවක්. මේක වුණේ export කමාන්ඩ් එක භාවිතා කරලා අපි variable එකක් export කරපු නිසා. ඔයාට මේක වඩා හොඳට තේරෙන්න නම්, first.sh ෆයිල් එකේ තියෙන export කමාන්ඩ් එක සහිත ලයින් එක අයින් කරන්න, නැත්නම් comment කරන්න ඉස්සරහින් # එකක් දාලා. දැන් ආපහු first.sh script එක run කරවලා බලන්න. දැන් අපිට කිසිම output එකක් එන්නෙ නෑ. Export කිරීමක් නැතුව subshells අතර data යවන්න බැහැ.


හොඳයි, මම මේකෙ arithmetic expressions ගැනත් සාකච්ඡා කරන්න බලාපොරොත්තු වුණා, ඒත් පාඩම ගොඩක් දිග වුණ නිසා ඒක අතහැරියා. අපි ඒක ඊළඟට කතා කරමු. එතෙක්, ගිහින් එන්නම්. ඔබට ජය!