2014-05-21

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

while loop

දැන් අපි කතා කරන්නෙ while loop ගැන බලන්න while loopඑකේ syntax එක


   while
              [ condition ]
               do
                 මෙතන ලියන සියලු කමාන්ඩ් රන් වීම සිදුවේ.
            done
while loop එකේ තියන විශේෂත්වය තමයි ලබාදීල තියෙන condition එක false වෙනකන් දීල තියෙන කමාන්ඩ් ටික රන් කරවීම. බලන්න පහල තියෙන උදාහරණය කන්ඩිශන් එක true නිසා ඉවරයක් නැතුවම එකම කමාන්ඩ් එක රන් වීම සිද්ධ වෙනව.


##########################################
#!/bin/sh
#
#Script to test while statement
#
#
while [ 5 -eq 5 ]
do
echo "Welcome to while loop "
done
##########################################


හදිස්සියෙ වත් කොයි වෙලාවක හරි program එක ඇතුලෙදිම condition එක false උනොත් loop එක රන් වෙන එක නවතිනව.

The case Statement

මේක ගැන හොදටම තේරුම් ගන්න මුලින්ම පහල තියෙන උදාහරණෙ බලන්න.
##########################################
#!/bin/sh
#
# if no vehicle name is given
#
# if no command line arg



if [ -z $1 ]
then
rental="*** Unknown vehicle ***"
elif [ -n $1 ]
then
# otherwise make first arg as rental
rental=$1
fi



case $rental in
"car") echo "For $rental Rs.20 per k/m";;
"van") echo "For $rental Rs.10 per k/m";;
"jeep") echo "For $rental Rs.5 per k/m";;
"bicycle") echo "For $rental 20 paisa per k/m";;
*) echo "Sorry, I can not gat a $rental for you";;
esac


##########################################
මේක රන් කරන්න ඕන car , van ,jeep ,bicycle යන ඒවයින් මොකක් හරි පැරාමීටරයක් එක වරකට යොදා ගෙන(වෙන එකක් උනත් දීල බලන්න පුලුවන්)
මුලින්ම බලන්න මේ කොටස දිහා
-Z හා -n ගැන මම කලින් කියල තියෙනව
-Z කියන්නෙ string1 is NULL and does exist
-n කියන්නෙ string1 is NOT NULL and does exist


##############################################################
if [ -z $1 ] # $1 වේරියබල් එක හිස් නම් හා එහෙම එකක් පවතිනව
then # නම්
rental="*** Unknown vehicle ***" # rental කියන variable එකට ** Unknown vehicle *** assign කරන්න
elif [ -n $1 ] # $1 වේරියබල් එක නැත්නම් හා එහෙම එකක් පවතිනව
then # නම්
# otherwise make first arg as rental
rental=$1 # rental කියන variable එකට $1 assign කරන්න.
fi
###########################################################


ඊළගට බලන්න මේ කොටස


case $rental in
"car") echo "For $rental Rs.20 per k/m";;
"van") echo "For $rental Rs.10 per k/m";;
"jeep") echo "For $rental Rs.5 per k/m";;
"bicycle") echo "For $rental 20 paisa per k/m";;
*) echo "Sorry, I can not gat a $rental for you";;
esac # අවසානය.

$rental ගේ අගය car , van ,jeep ,bicycle යන අගයන් උනොත් අදාල පණිවිඩය echo මගින් print වීම සිදු වෙනව.ඒහෙම නොවුනොත් *) මගින් තියෙන ලයින් එක print වෙනව. මෙන්න මේකට තමයි මේ case statement කියල හදුන්වන්නෙ.
මේ තියෙන්නෙ මේකෙ syntax එක.


case
 $variable-name  in
               
pattern1)   command
                    
           ...
                    
           ..
                    
           command;;
               
pattern2)   command
                    
           ...
                    
           ..
                    
           command;;
               
patternN)   command
                    
           ...
                    
           ..
                    
           command;;
                *)
            command
                    
           ...
                    
           ..
                    
           command;;
           esac
මේක සමාන කරන්න පුලුවන් හරියට switch එකකින් light එකක් දානව වගේ වැඩකට. එක් ස්විව්
එකකින් ඒකට අදාල බල්බ් එක පත්තු කරන්න පුලුවන්.

de-bug the shell script

අපි ශෙල් program කරනකොට සමහර වෙලාවට ඒවයි තියෙන වැරදි (errors ) හොයාගන්න සිද්ධ වෙනව.හොයල ඒව නිවැරදි කරන්න සිද්ධ වෙනව මෙන්න මේකට අපි කියනව debug කරනව කියල.අපට මේක කරන්න පුලුවන් -x හා -v කියන option දෙක භාවිතා කරල.
මේක භාවිතා කරන්නෙ terminal එකේ ශෙල් ස්ක්‍රිප්ට් එක රන් කරනකොට.
Syntax එක මෙන්න මෙහෙමයි.
sh option { shell එකේ name එක. }
අපි මේක කරල බලමු. අපි මුලින්ම errors තියන ශෙල් ස්ක්‍රිප්ට් එකක් රන් කරල බලමු මොකද වෙන්නෙ කියල.ඔයාලති මේ ශෙල් එක ලියල රන් කරල බලන්න.
මේකෙ වරද තියෙන්නෙ tot= `expr $1 + $2` කියන තැන කියල ඔයාලට පේනව නේද?
##########################################
#!/bin/sh
#
#
# Script to show debug of shell
#
tot= `expr $1 + $2`
echo $tot

######################################
මේක රන් කරාම terminal එකේ expr: syntax error කියල පෙන්නුව නේද? අපි දැන් මේකට debug options හාවිතා කරල බලමු.
මුලින්ම බලමු -x කියන option එකත් එක්ක රන් කරල. දැන් ස්ක්‍රිප්ට් එක රන් කරන්න ඕන
sh -x script Name කියල දැන් ඔයාලට පෙනේවි ටර්මිනල් එකේ මෙන්න මේ විදියට

+ expr +
expr: syntax error
+ tot=
    echo
expr: syntax error කියල පෙන්නන්නෙ error එක තියෙන තැන.

ඊළගට බලමු අනිත් option එක යොදාගෙන රන් කරල.
##########################################
#!/bin/sh
#
#
# Script to show debug of shell
#
tot= `expr $1 + $2`
expr: syntax error
echo $tot

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

මෙන්න මෙහෙම එකක් තමයි ටර්මිනල් එකේ පෙන්නන්නෙ කලින් පෙන්නපු විදියට වඩා මේ විදිය බලාගන්න පහසුයි නේද? ගොඩක් complex ස්ක්‍රිප්ට් debug කරනකොට මේකෙන් කරන එක තමයි පහසු.

ඔන්න මෙතනින් structured shell script පාඩම ඉවරයි ඊළගට පටන්ගන්නෙ advanced shell scripting


Share:

1 comments:

Anonymous said...

Thanks.

advanced shell scripting patan ganne neddo....