2014-05-14

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


මේ පාඩමේ ඉදන් අපි කතා කරන්නෙ වයුහාත්මක shell ප්‍රොග්‍රැමින් ගැන.

  1. structured ශෙල් ගැන......
ඇත්තටමෙ මේකෙදි කතා කරන්න තියෙන්නෙ තර්ක හා තීරණ ආශිත දේවල්. තීරණ හා තර්ක අපට අලුත් දේවල් නෙවෙයි නෙ. අපි නිතරම තීරණ ගන්නව තර්ක කරනව ඉතින් ඒ ගැන ආයෙ අමුතුවෙක් කතා කරන්න ඕන නෑ කියලයි මම හිතන්නෙ. අපි ගන්න තීරණ හා තර්ක තරම් සංකීර්ණ නෑ කම්පියුටර් එකට තේරෙන තර්ක හා තීරණ. කම්පියුටර් වලට තේරෙන්නෙ 1 හා 0 කියන අවස්ථා දෙක විතරක් නිසයි එයාට අපි හිතන තරම් ලොකු දේවල් තේරෙන්නෙ නැත්තෙ.
දැන් ඉතින් මේ කතාව පැහැදිලි කරගන්න මේ වැඩේ කරන්න

ටර්මිනල් එක ඔපන් කරල bc කියල ටයිප් කරල එන්ටර් කරන්න. bc කියල කියන්නෙ ලිනක්ස් වල තියෙන කැල්කියුලේටර් වැඩසටහනක්.මේකට ලස්සන ඉන්ටෆේස් එකක් නම් නැහැ ටර්මිනල් එක මත තමයි ඩිස්පෙලේ වෙන්නෙ.


bc කියල එන්ටර් කරහම කර්සර් එක බිලින්ක් වෙවී තියෙනව. දැන් ඔයාල මේව එකින් එක ටයිප් කරල එන්ටර් කරල බලන්නෙකො.
  1. 14+6
  2. 12-1
  3. 7*8
  4. 14/2
උත්තර අවෙ මේව නේ
      1. 20
      2. 11
      3. 56
      4. 7
ඊළඟට මේක කරල බලන්න
      1. 14>3
      2. 5<2
      3. 5<=8
      4. 7<=4
      5. 3!=2
      6. 5=5
      7. 3!=3
! සලකුණෙන් අදහස් කරන්නෙ NOT කියන එක.(නෑ කියන එක) != මගින් අදහස් කරන්නෙ සමාන නෑ කියන එක (not equal)

පිළිතුරු වුනේ මේව නේද ?
          1. 1
          2. 0
          3. 1
          4. 0
          5. 1
          6. 1
          7. 0
මේව වල පිළිතුරු 1 හා 0 උනේ ඇයි කියල දන්නවද ? ඒ ඒ අවසථා වල අපි කරපු දේවල් ඇත්ත නම් ප්‍රතිඑලය 1 උනා එහෙම නැත්තම් 0 උනා. ආයෙ බලමු ඒ උදාහරණ ටික.
        1. 14>3 -: 3 වඩා 14 ලොකු නිසා මේක ඇත්ත. true
        2. 5<2 -: මේක පට්ට බොරුවක් නිසා false
        3. 5<=8 -: සමාන නොවුනත් විශාල නිසා මේක true
        4. 7<=4 -: මේකත් බොරු false
        5. 3!=2 -: තුන දෙකට සමාන නැති නිසා මේක true
        6. 5=5 -: පහ පහට සමාන නිසා මේක true
        7. 3!=3 -: මේක බොරු කියල පෙනව බැලුව ගමන් false
ලිනක්ස් ශෙල් වලදි මේ ඇත්ත බොරු(true , false) කතාව පෙඩ්ඩක් වෙනස් වෙනව.
ශෙල් වලදි true false කියන දෙක ඉදිරිපත් කරන්නෙ මෙහෙමයි
1ඒ කිව්වෙ true කියන එක 0 මගින් පෙන්නනව.
0 ඒ එහෙමත් නැත්තම් false කියන එක 0 නොවන අගයක් මගින් පෙන්නනව.තවදුරටත් පැහැදිලි කර ගන්න පහල තියෙන වගුව බලන්න.මේක නිසැකවම මතක තියාගන්න නැත්තම් ඔක්කොම පැටලෙනව.

කලින් bc වලින් පෙන්නපු අගය
අගය
ශෙල් වල පෙන්නන ආකාරය
1
true
0
0
false
බිංදුව නොවන ඕනෑම අගයක් (-9 ,8 ,32)

Test command or expression

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

මුලින්ම බලන්න පහල තියෙන උදාහරණෙ දිහා

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

$ gedit > ispostive
#!/bin/sh
#
# Script to see whether argument is positive
#
if test $1 -gt 0
then
echo "$1 number is positive"
fi

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

මෙක ලියල mod කරල රන් කරන්න ඔන කමාන්ඩ් ලයින් ආර්ගියුමන්ට් එකකුත් එක්ක. ඒ ලබාදෙන ආර්ගියුමන්ට් එක පොසිටිව් නම් number is positive කියල ප්‍රින්ට් වෙනව.ඒ වැඩේ සිද්ධ වෙන්නෙ මෙන්න මේ ලයින් ටිකෙන්.

if test $1 -gt 0
then
echo "$1 number is positive"

test $1 -gt 0 කියන එකේ තේරුම $1 වේරියබල් එකේ තියන අගය 0 වඩා විශාල නම් number is positive කියන එක ප්‍රින්ට් කරන්න කියල. (-gt කියල කිව්වෙ is greater than කිය්න එක. පහල දක්වල තියනව තව ඒවගේ ඒව ගැන)

test කියන කමාන්ඩ් එකෙන් නිතරම 0 හෝ වෙනයම් අගයක් return කරනව අදාල කමාන්ඩ් එකට හෝ expression එකට අදාල. අපට මේක use කරන්න පුලුවන්
1.Integer ( Number without decimal point)
2.File types
3.Character strings
කියන ඒවත් එක්ක.

පහල තියෙන table එක බැලුවහම මේ ගැන හොදටම තේරුම ගන්න පුලුවන්

For Mathematics, use following operator in Shell Script
Mathematical Operator in  Shell Script 
Meaning
Normal Arithmetical/ Mathematical Statements
But in Shell



For test statement with if command
For [ expr ] statement with if command
-eq is equal to 5 == 6 if test 5 -eq 6 if [ 5 -eq 6 ]
-ne is not equal to 5 != 6 if test 5 -ne 6 if [ 5 -ne 6 ]
-lt is less than 5 < 6 if test 5 -lt 6 if [ 5 -lt 6 ]
-le is less than or equal to 5 <= 6 if test 5 -le 6 if [ 5 -le 6 ]
-gt is greater than 5 > 6 if test 5 -gt 6 if [ 5 -gt 6 ]
-ge is greater than or equal to 5 >= 6 if test 5 -ge 6 if [ 5 -ge 6 ]

For string Comparisons use
Operator
Meaning
string1 = string2 string1 is equal to string2
string1 != string2 string1 is NOT equal to string2
string1 string1 is NOT NULL or not defined
-n string1 string1 is NOT NULL and does exist
-z string1 string1 is NULL and does exist
Shell also test for file and directory types
Test
Meaning
-s file   Non empty file
-f file   Is File exist or normal file and not a directory
-d dir    Is Directory exist and not a file
-w file  Is writeable file
-r file   Is read-only file
-x file   Is file is executable
Logical Operators


Logical operators are used to combine two or more condition at a time
Operator           
Meaning
! expression Logical NOT
expression1  -a  expression2 Logical AND
expression1  -o  expression2 Logical OR

  1. if කොන්දේසිය (if Condition )
අපිට මේ if කියන condition එක මගින් පුලුවන් අවස්ථා නිර්මාණය කරන්න.අවස්ථා කිව්වෙ තර්ක කරනව වගේ වැඩ.බලන්න පහල තියෙන අවස්තා.

1. “උබ මට ගැහුවෙත් මමත් ගහනව ”
2. “පහ විශාල නම් තුනට වඩා big කියල ප්‍රින්ට් කරන්න ”

මෙතනදි ගහන්නෙ ගැහුවොත් විතරයි. එහෙම නැතුව ගහන්න යන්නෙ නෑ. මේ වගේ දෙයක් තමයි if මගින් නිරූපනය කරන්න පුලුවන් තව ඉස්සරහ උදාහරණ වලදි මේක හොදට තේරුම් ගන්න පුලුවන් වෙයි. දෙවනියට දීල තියෙන උදාහරනෙ කරල බලමු දැන්.

#############################################################################
$ gedit > my
#!/bin/sh
#
#Script to print big
#
if 5 > 3
then
echo “Big”
fi

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




Post a Comment