Shell Scripting

by Sameera Shaakunthala

අප මෙම ලිපි පෙළ තුළින් ඉදිරිපත් කරන්නේ ලිනක්ස් පාරිසරිකය තුළ දී shell script සකස් කර භාවිතයට ගන්නා පිළිබඳවයි. පසුගිය කොටසින් අප සාකච්ඡා කරන ලද්දේ if යෙදීම භාවිත කරමින් තීරණ ගැනීම් ක්‍රමවිධි (decision making) කරන ආකාරය පිළිබඳව යි. මෙම කලාපයෙන් අපි, 'තීරණ ගැනීම' හෙවත් decision making සඳහා භාවිත වන case ප්‍රකාශනය භාවිත කරන ආකාරය සාකච්ඡා කරමු.

case ප්‍රකාශන භාවිත වනුයේ කොන්දේසි දෙකකට වැඩි ගණනක් පරීක්ෂා කළ යුතු අවස්ථාවන්හිදී යි. උදාහරණයක් ලෙස, දී ඇති විධාන පෙළ පරාමිතියක් විවිධ අගයයන් කීපයක් ගන්නා විට shell script එක මගින් අදාළ ප්‍රදානයට අදාළ ප්‍රතික්‍රියාව දැක්වීම ගත හැකියි.

මෙවන් තත්වයකදී if භාවිත කළහොත් එක්කෝ (පෙර ලිපියේ අවසානයේ සඳහන් කළ පරිදි) කැදැලිගත (nested) if ප්‍රකාශන භාවිත කළ යුතු වෙයි. නැතහොත් else කීපයකින් යුත් බහු-මට්ටම් (multilevel) if ප්‍රකාශන ලිවිය යුතු වෙයි. නමුත් මෙයින් සිදු වන්නේ අපගේ ක්‍රමලේඛය අනවශ්‍ය ලෙස සංකීර්ණ වීමයි. මෙවන් අවස්ථාවන්හිදී case ප්‍රකාශනය භාවිත කළහොත් එම ක්‍රියාකාරීත්වයම ඇති ක්‍රමලේඛයක් සරල ආකාරයෙන් සකස් කරගත හැකි වෙයි.

 

if [ $1 = 'passwd' ]
then
vi /etc/passwd
else
if [ $1 = 'fstab' ]
then
vi /etc/fstab
else
if [ $1 = 'cpuinfo' ]
then
cat /proc/cpuinfo
else
echo 'Invalid input'
fi
fi
fi

 

ඉහත උදාහරණයේ if-then-else-fi රටාව නැවත නැවතත් භාවිත වී ඇති ආකාරය බලන්න. විචල්‍යයේ නම, then, else හා if මෙසේ අනවශ්‍ය පරිදි නැවත නැවතත් යෙදීම වළක්වා ගැනීමට case ප්‍රකාශනය භාවිත කිරීමෙන් හැකි වෙයි.

ඉහත උදාහරණයම බහු-මට්ටම් if ප්‍රකාශනයක් මගින්,

 

if [ $1 = 'passwd' ]
then
vi /etc/passwd
elif [ $1 = 'fstab' ]
then
vi /etc/fstab
elif [ $1 = 'cpuinfo' ]
then
cat /proc/cpuinfo
else

echo 'Invalid input'
fi

 

මෙහිදී ද විචල්‍යයේ නම, then, else නැවත නැවත් භාවිත වී ඇති ආකාරය බලන්න. ඉහත උදාහරණයම case භාවිත කරමින් නැවත ක්‍රමලේඛණය කළොත්, පහත දැක්වෙන ආකාරයේ සරල කේතයක් අපට ලිවිය හැකි වෙයි.

 

case $1 in
'passwd') vi /etc/passwd;;
'fstab') vi /etc/fstab;;
'cpuinfo') cat /proc/cpuinfo;;
*) echo 'Invalid input';;
esac

 

case ප්‍රකාශනයේ කාරක රීති (syntax) පහත පරිදි වෙයි.

 

case $විචල්යය in
අගයය 1)
1 අගය සඳහා විධානය හෝ විධාන අනුපිළිවෙල
;;
අගයය 2)
2 අගය සඳහා විධානය හෝ විධාන අනුපිළිවෙල
;;
අගයය 3)
3 අගය සඳහා විධානය හෝ විධාන අනුපිළිවෙල
;;
අගයය 4)
4 අගය සඳහා විධානය හෝ විධාන අනුපිළිවෙල
;;
අගයය N)
N අගය සඳහා විධානය හෝ විධාන අනුපිළිවෙල
;;
*)
ඉහත එක් අගයක්වත් නොවන අනෙක් සියළුම අගයයන් සඳහා විධාන අනුපිළිවෙල
;;
esac

 

ක්‍රමලේඛ ප්‍රතිරචනය නොහොත් looping යන සිද්ධාන්තය පිළිබඳව අපි මීළඟ කොටසින් සාකච්ඡා කරමු.

Previous Article

 

Share/Save
Your rating: None Average: 4 (1 vote)