මේ
පාඩමේ ඉදන් අපි කතා කරන්නෙ
වයුහාත්මක shell ප්රොග්රැමින්
ගැන.
- structured ශෙල් ගැන......
ඇත්තටමෙ
මේකෙදි කතා කරන්න තියෙන්නෙ
තර්ක හා තීරණ ආශිත දේවල්.
තීරණ හා තර්ක
අපට අලුත් දේවල් නෙවෙයි නෙ.
අපි නිතරම
තීරණ ගන්නව තර්ක කරනව ඉතින්
ඒ ගැන ආයෙ අමුතුවෙක් කතා කරන්න
ඕන නෑ කියලයි මම හිතන්නෙ.
අපි ගන්න
තීරණ හා තර්ක තරම් සංකීර්ණ
නෑ කම්පියුටර් එකට තේරෙන තර්ක
හා තීරණ. කම්පියුටර්
වලට තේරෙන්නෙ 1 හා
0 කියන
අවස්ථා දෙක විතරක් නිසයි එයාට
අපි හිතන තරම් ලොකු දේවල්
තේරෙන්නෙ නැත්තෙ.
දැන් ඉතින් මේ කතාව පැහැදිලි කරගන්න මේ වැඩේ කරන්න
දැන් ඉතින් මේ කතාව පැහැදිලි කරගන්න මේ වැඩේ කරන්න
ටර්මිනල් එක ඔපන් කරල bc කියල ටයිප් කරල එන්ටර් කරන්න. bc කියල කියන්නෙ ලිනක්ස් වල තියෙන කැල්කියුලේටර් වැඩසටහනක්.මේකට ලස්සන ඉන්ටෆේස් එකක් නම් නැහැ ටර්මිනල් එක මත තමයි ඩිස්පෙලේ වෙන්නෙ.
bc කියල
එන්ටර් කරහම කර්සර් එක බිලින්ක්
වෙවී තියෙනව. දැන්
ඔයාල මේව එකින් එක ටයිප් කරල
එන්ටර් කරල බලන්නෙකො.
- 14+6
- 12-1
- 7*8
- 14/2
උත්තර
අවෙ මේව නේ
- 20
- 11
- 56
- 7
ඊළඟට
මේක කරල බලන්න
- 14>3
- 5<2
- 5<=8
- 7<=4
- 3!=2
- 5=5
- 3!=3
! සලකුණෙන්
අදහස් කරන්නෙ NOT කියන
එක.(නෑ
කියන එක) != මගින්
අදහස් කරන්නෙ සමාන නෑ කියන
එක (not equal)
පිළිතුරු
වුනේ මේව නේද ?
- 1
- 0
- 1
- 0
- 1
- 1
- 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
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 |
- if කොන්දේසිය (if Condition )
අපිට
මේ if කියන
condition එක
මගින් පුලුවන් අවස්ථා නිර්මාණය
කරන්න.අවස්ථා
කිව්වෙ තර්ක කරනව වගේ වැඩ.බලන්න
පහල තියෙන අවස්තා.
1. “උබ
මට ගැහුවෙත් මමත් ගහනව ”
2. “පහ
විශාල නම් තුනට වඩා big
කියල ප්රින්ට්
කරන්න ”
මෙතනදි
ගහන්නෙ ගැහුවොත් විතරයි.
එහෙම නැතුව
ගහන්න යන්නෙ නෑ. මේ
වගේ දෙයක් තමයි if මගින්
නිරූපනය කරන්න පුලුවන් තව
ඉස්සරහ උදාහරණ වලදි මේක හොදට
තේරුම් ගන්න පුලුවන් වෙයි.
දෙවනියට දීල
තියෙන උදාහරනෙ කරල බලමු දැන්.
#############################################################################
$ gedit >
my
#!/bin/sh
#
#Script to print big
#
if 5 >
3
then
echo “Big”
fi
#################################################################
0 comments:
Post a Comment