ලිනක්ස් Shell Programming පාඩම-කොටස 06

ලිනක්ස් ශෙල් ප්‍රොග්‍රැමින් ගැන ඉගෙන ගන්න.

ලිනක්ස් Shell Programming පාඩම-කොටස 06

Postby root » Sat Oct 18, 2014 7:08 pm


10.Exit Status කියන්නෙ මොකද්ද?

කලින් පාඩමේ අන්තිමට කරපු උදාහරණෙ අන්තිමට තිබුන මතකද exit 0 කියල එකක්. ඒ මොකද්ද කියල තමයි මම කියන්න යන්නෙ දැන්.

මේකයි කතාව Linux වලදි මොකක් හරි Command එකක් හරි shell script එකක් හරි රන් කරහම ඒ රන් කරපු එක successful නම් එක් අගයකුත් successful නැත්තම් තවත් අගයකුත් return වෙනව.මෙන්න මේකට තමයි exit status එක කියල කියන්නෙ.මේ value එක ගබඩා වෙන්නෙ $? කියල විශේෂ variable එකකට.අපි ඒක කරල බලමුකො දැන්.

ඔයාලගෙ terminal එක open කරල මෙහෙම type කරන්න.
rm catAnddog
catAnddog කියන එකට කැමති නමක් දෙන්න (හැබැයි ඒ නමින් file එකක් හරි directory තියෙන්න බෑ එතන)
rm - කියන්නෙ අයින් කරන්න කියල (delete)
catAnddog කියන්නෙ file එකක නමක්

rm catAnddog වලින් වෙන්නෙ දැනට ඉන්න directory එකේ තියෙන catAnddog කියන file එක අයින් කරන එක ඒත් එහෙම කරන්න එතන catAnddog කියල file එකක් නැති නිසා rm: cannot remove `catAnddog': No such file or directory කියල error පණිවිඩයක් පෙන්නාවි Terminal එකේ දැන් අපි command එකක් රන් කරානෙ ඒනිසා exit status එක වෙනස් වෙලා තියෙන්නෙ දැන් (ඒ කියන්නෙ $? කියන variable එකට අගයක් Assign වෙලා තියෙන්න ඔන) අපි දැන් බලමු ඒ අගය මොකද්ද කියල ඒක බලන්නෙ මෙහෙමයි terminal එකේ type කරන්න echo $? කියල මේ කමාන්ඩ් එක රන් කරහම 1 කියල ප්‍රින්ට් උනා නේද ? දැන් ls කියල type කරල enter කරන්නකො (ls කියන කමාන්ඩ් එකෙන් පුලුවන් දැනට ඉන්න directory එකේ තියෙන සියලු files බලා ගන්න) දැන් ඔයා අයෙ echo $? රන් කරහම 0 කියල print උනා නේද? මෙන්න මේකයි වෙන්නෙ කමාන්ඩ් එක හරි shell එක හරි හරියට රන් උනේ නැත්තම් exit status එක 1 වෙනෙව හරියට රන් උනානම් exit status එක 0 වෙනව කලින් දෙවනියට රන් කරපු ls command එක error නැතුව රන් උන නිසා $? ගෙ අගය 0 උනා .
මෙන්න මෙතන තියන උදාහරණ කිහිපයත් බලන්න.

01. expr 5 + 3
echo $?
02. echo hi man
echo $?
03. echo $?
04. date
echo $?
05. echon $?
echo $?
06. echo cal
echo $?


ඊළඟට මම දෙන්නම් තවත් shell වල භාවිතා කරන variables කිහිපයක් දැනට මේව ඒ තරම් නොතේරුනාට කමක් නෑ පස්සෙ මේව ගැන දැනගන්න ලැබෙයි.


$# : Number of command line arguments. Useful to test no. of command line args in shell script.
$* :All arguments to shell
$@ :Same as above
$- :Option supplied to shell
$$ :PID of shell
$! :PID of last started background process (started with &)

මේ උදාහරණෙන් ඔයාට යම් අදහසක් ලැබෙයි මේ ගැන
####################################################

$ vi demo
#!/bin/sh
#
# Script that demos, command line args
#
echo "Total number of command line argument are $#"
echo "$0 is script name"
echo "$1 is first argument"
echo "$2 is second argument"
echo "All of them are :- $* or $@"

###################################################

11. විචල්‍ය (වේරියබල්)
අපි කම්පියුටරෙන් මොකක් හරි වැඩක් කරනකොට අපි භාවිතා කරන සමහර දත්ත RAM මෙමරි එකේ තැම්පත් කරල තියාගන්නව කියල ඔයාල දන්නවනෙ. Ram එක කුඩා කොටස් ගණනාවකට බෙදල තියෙන්නෙ ඒ හැම කොටසකටම එකිනෙකට වෙනස් ඇඩ්ඩ්‍රස් තියෙනව හරියට අපෙ ගෙවල් වලට තියෙනව වගේ අපි ඒ කුඩා කොටසක් හදුන්වනව memory location එකක් කියල. ඒව ඇතුලෙ තමයි අපේ දත්ත ගබඩා වෙලා තියෙන්නෙ. ප්‍රෝග්‍රැමර්ස් ලට පුලුවන් ඒ අඩ්ඩ්‍රස් වෙනස් කරගන්න කැමති විදියකට. අන්න එහෙම වෙනත් නමකින් memory location එකක් වෙන් කර ගත්තම අපි එකට කියනව variable එකක් කියල.මේ variable එකක එක පාරකට save කරන්න පුලුවන් එක වර්ගයක දත්ත විතරයි.

Shell ගැන කතා කරනකොට අපි variables දෙකක් ගැන කතා කරනව ඒව තමයි.
1. System Variables (SV)- මේව හදල තියෙන්නෙ shell හදපු අයම තමයි අපට වෙනස් කරන්න බෑ නිතරම මේව ලියන්නෙ ඉංග්‍රීසි කැපිටල් අකුරු වලින්.
2. User defined Variables (UDV) – මේව හදල නඩත්තු කරන්නෙ User ඒ කියන්නෙ අපි. මේ වේරියබල්ස් ලියනකොට ලියන්නෙ ඉංග්‍රීසි සිම්පල් අකුරු වලින්.


මම දැන් දෙනව ගොඩක් වැදගත් වෙන SV කිහිපයක් ඒව මේව වෙනස් කරන්න යන්න නම් එපා. එහෙම කරොත් සමහර විට අවුල් අතිවෙන්න පුලුවන්.

01.BASH - මේකෙ තියෙන්නෙ අපේ computer එකේ තියෙන shell වර්ගය(නම).
02.BASH_VERSION -computer එකේ තියෙන shell version.
03.COLUMNS- අපේ ස්ක්‍රීන් එකේ තියෙන columns ගණන.
04.HOME- අපේ home directory එකේ name එක.
05.LINES- අපේ ස්ක්‍රීන් එකේ තියෙන ළlines ගණන.
06.LOGNAME-දැනට අපි ලොග් වෙලා ඉන්න නම.
07.OSTYPE- අපේ තියෙන OS එකේ වර්ගය.
08.PATH-path වල සැකැස්ම.
09.PS1-අපේ ප්‍රොම්ට්(prompt) සැකැස්ම
10.PWD -අපි දැනට ඉන්න ඩිරෙක්ටරි එක.
11.SHELL-මේකෙ තියෙන්නෙ අපේ computer එකේ තියෙන shell වර්ගය(නම).
12.USERNAME- දැනට ලොග් වෙලා ඉන්න කෙනාගෙ username එක.
මේ තියෙන හැම වේරියබල් එකකම මොනව හරි අගයක් save වෙලා තියෙනව ඔයාලට ඒක බලා ගන්න ඔන නම් මෙන්න මෙහෙම කරල බලන්න.

echo $BASH
echo $USERNAME

මෙහෙම හැම variable එකකම තියෙන අගයන් ප්‍රින්ට් කරල බලන්න පුලුවන් අනිව $ මාර්ක් එක තියෙන්න ඕන Variable එකට ඉස්සරහින් හරිද ? මෙන්න මෙහෙම කරොත් ප්‍රින්ට් වෙන්න වෙන එකක්

echo BASH

වේරියබල් එකේ නම ම තමයි ප්‍රින්ට් වෙන්නෙ.

අපට පුලුවන් BASH=”කැමති වැලියු එකක්” කියල දීල BASH කියන SV එකේ අගය වෙනස් කරන්න ඒත් එහෙම කරන්න යන්න එපා. ඒ වෙගේ ඒව පස්සෙ කරල බලන්න පුලුවන්.

12.User defined variables ගැන කතා කරමු දැන්

අපි හදමු name කියල variable එකක් ඒකට assign කරමු Nimal කියල ඒක කරන්නෙ මෙහෙමයි

name=nimal

හරිම සරලයි මෙන්න මේකයි පොදු ක්‍රමය වේරියබල් හැදීමේ
වේරියබල් එකේ නම=assing කරන්න බලාපොරොත්තු වෙන අගය

මතක තියාගන්න name = nimal කියල සමාන ලකුන දෙපැත්තෙ ඉඩ (spaces) තියන්න බැරි බව.

මෙන්න තව එව්ව ටිකක්
1. animal=cat
2. blogs=madterminal.blogspot.com
3. vehicle=car
4. integer=15
5. double=19.258

හැබැයි මෙන්න මෙහෙම නම් කරන්න බෑ හරිද
15=integer

value එකට නමක් දාන්න නම් බෑ එතකොට වැරදියි. නිතරම දාන අගය තියෙන්න ඔන දකුණු පැත්තෙ.

01.animal=cat
02.blogs=madterminal.blogspot.com
03.vehicle=car

මේ තියෙන ඒව අර්ත දක්වන්නෙ මෙහෙමයි

animal=cat -:Animal having cat සත්තු අතර තමයි පූස ඉන්නෙ
blogs=madterminal.blogspot.com -:blogs having madterminal.blogspot.com බ්ලොග් වල තමයි madterminal.blogspot.com තියෙන්නෙ.

vehicle=car -: vehicle having car වාහන වල තමයි car තියෙන්නෙ.


13.වේරියබල් නාමකරණයේ නීති රීති.

01.shell වේරියබල් වලට Alphanumeric (අකුරු ඉලක්කම් දෙකම අන්තර්ගත )නම් දෙන්න පුලුවන් ඒ වගේම underscore (_) එකත් භාවිතා කරන්න පුලුවන් පහල තියන උදාහරණ බලන්න

ex-: HOME
BASH
van
_number
system_version


02.වේරියබල් වලට අගයන් assign කරනකොට මෙන්න මේවගේ සමාන ලකුණ දෙපැත්තෙ ඉඩ තියෙන්න බෑ හරිද ?
no = 10
name = saman

ඒ වගේම මේවත් වැරදියි
no =10
no= 10
කොහොම හරි ඉඩ තියන්න බෑ = ලකුණ දෙපැත්තෙ.

03.වේරියබල් නම් case-sensitive ඒ කියන්නෙ අකුරු වල කැපිටල් සිම්පල් බේදය බලපානව ඒක තේරුම් ගන්න පහල තියෙන උදාහරණ බලන්න.
මුලින්ම no කියල variable එකක් හදල ඒකට 10 assing කරන්න.
no=10

දැන් ඒක ප්‍රින්ට් කරල බලන්න
echo $no

10 කියලම නේද ප්‍රින්ට් වෙන්නෙ ? දැන් ආයෙ මෙහෙම කරන්න.
no=20

ආයෙත් ප්‍රින්ට් කරන්න දැන්
echo $no

උත්තරේ 20 නේද ? මේකෙන් ඔයාට තේරේවි කලින් තිබුන no කියන වේරියබල් එකේ value එකම තමයි දෙවනි පාරත් වෙනස් උනේ කියල.ඊළඟට බලන්න පහල තියෙන කතාව.



1. animal=cat
2. animaL=dog
3. Animal=rabbit

මෙතන තියෙන වේරියබ්ල් 3ක් තුනේම නම එකමයි ඒත් ලියපු ආකාර වෙනස් තුනේම තියෙන ඒව ප්‍රින්ට් කරල බැලුවොත් එකිනෙකට වෙනස් අගයන් තමයි තියෙන්නෙ කලින් වගේ නැවත නැවත වේරියබල් values වෙනස් උනේ නෑ.දැන් තේරුනා නේද case-sensitive කතාව.


4. Null වේරියබල් සැදීම.
value එකක් assign නොකර හදන වේරියබල් එකක් තමයි නල් වේරියබල් එකක් කියල හදුන්වන්නෙ.ඒව හදන හැටි බලන්න දැන්

animal=
animal=” ”

මේ ක්‍රම දෙකටම කරන්න පුලුවන් දැන් මේක ප්‍රින්ට් කරල බලන්න එතකොට terminal එකේ හිස් ලයින් එකක් ප්‍රින්ට් වෙනව ඔයාලට බලාගන්න පුලුවන්.

5. අන්තිමට කියන්න තියෙන කරුණ තමයි ? හා * කියන ලකුණු වේරියබල්ස් නම් කරනකොට යොදා ගන්න එපා කියල.ඔන්න ඔය කිව්ව කරුණු 5 තමයි වේරියබල් නාමකරණයේ නීති රීති විදියට තියෙන්නෙ.
  • 0

User avatar
root
Site Admin
 
Posts: 83
Joined: Mon Jul 15, 2013 3:46 pm
Has thanked: 0 time
Been thanked: 0 time
Reputation: 0

Return to Shell Programming

Who is online

Users browsing this forum: No registered users and 0 guests

cron