Programming concept වල භාවිතා වෙන Bash Shell commands එක්ක Terminal තොවිලය - (Lesson 14)
![Programming concept වල භාවිතා වෙන Bash Shell commands එක්ක Terminal තොවිලය - (Lesson 14)](/content/images/size/w1200/2020/07/bash-shell-programing-concepts-android-wedakarayo.jpg)
![](https://backend.androidwedakarayo.com/content/images/2020/06/2647210_77bb_3.jpg)
අද අපි කතා කරන්න යන්නෙ බොහොම වැදගත් programming concept ටිකක Bash Shell වල භාවිතය. එහෙනම් අපි පාඩමට යමු.
if, then, else
Programming concept වල මූලිකම තියරියක් තමයි මේ. Decision making වලදි මේවා ප්රයෝජනවත් ගොඩක්.
අපි script එකක් ලියමු, user ගෙන් සංඛ්යාවක් අරන්, ඒක 5ට වඩා වැඩි නම්, That is correct! කියලා Print වෙන්නත්, ඒක 5ට වඩා අඩු නම්, You disobeyed!! කියලා ප්රින්ට් වෙන්නත්.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-if-1-android-wedakarayo.png)
ඔන්න script එක, දැන් අපි run කරලා බලමු. මුලින් අපි 6 දීලා බලමු. ඊළඟට අපි 4 දීලා බලමු.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-if-2-android-wedakarayo.png)
අපි බලාපොරොත්තු වෙන output එක ලැබුණා.
දැන් අපි තව script එකක් ලියමු. මේ script එකෙන් අපි බලමු positional parameter විදියට user ගෙන් input එකක් ලැබුණෙ නැත්නම්, ඒක error එකක් විදියට පෙන්නන්න.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-if-3-android-wedakarayo.png)
මේ script එකෙන් පරීක්ෂා කරනවා positional parameters ගාණ කීයද කියලා. ඒක 0ට සමානයි කියන්නෙ positional parameters නැහැ කියන එකයි. එතකොට අපිට අවශ්ය error message එක පෙන්නලා, error එකක් විදියට exit status එකක් දෙනවා. මේවා අපි මුලින් ඉගෙනගත්ත නිසා ආයෙ පැහැදිලි කිරීම් අනවශ්යයි කියලා හිතනවා.
මේක අපි run කරලා බැලුවොත්, මෙන්න මේ විදියෙ output එකක් තමයි බලාගන්න වෙන්නෙ. එක input එකක් හෝ තියේ නම්, error එකක් හෝ කිසිම output එකක් එන්නෙ නෑ.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-if-4-android-wedakarayo.png.png)
මෙතනදි මම තව දෙයක් කියලා දෙන්නම්. අපි කලින් කතා කරපු test කමාන්ඩ් එක පහසුවට මේ විදියට ලියන්න පුළුවන්.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-if-5-android-wedakarayo.png)
මෙතන වෙනස් වෙලා තියෙන්නෙ,
test $# -eq 0
කියන එක [ $# -eq 0 ]
කියලා ලියන එක විතරයි. මේකෙන් test කමාන්ඩ් එක අපිට නොලියා ඉන්න පුළුවන්. එතකොට කෝඩ් එක පැහැදිලියි වගේම කෙටියි.
case, in, esac
මේකත් කලින් වගේම එකක්. If, else භාවිතයෙදි කරන්න අපහසු දේවල් වලට තමයි මේක භාවිතා කරන්නෙ. ගොඩක් ඔප්ෂන් අතරින් එකක් පරීක්ෂා කරන්න මේක if else වලට වඩා පහසුයි.
අපි ස්ක්රිප්ට් එකක් ලියමු, user ට සතියේ දවස් වලින් කැමති දවසක් input කරන්න කියලා, ඒක Saturday හෝ Sunday වුණොත් Weekend කියලා print වෙන්නත්, අනික් දවස් වුණොත් Weekday කියලා print කරන්නත්.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-case-1-android-wedakarayo.png)
මේ script එකේ වරහන් යෙදුණ තැන් සහ සෙමිකෝලන් ; යෙදුණ තැන් හොඳට නිරීක්ෂණය කරන්න. මේ format එකට script එක ලියන්න හුරු වෙන්න. නැත්නම් අපිට අවශ්ය output එක ගන්න අමාරුයි.
මෙතනදි අපි කරන්නෙ day කියන variable එකට user විසින් input කරන දේ save කරගෙන ඒවා case එක හරහා යවලා පරීක්ෂා කරන එක.
මුල් පියවරේදි සති අන්තයේ දවසුත් ඊළඟ පියවරේදි සතියේ මැද දවසුත් පරීක්ෂා කරනවා. අන්තිම පියවර, අපි පරීක්ෂා කරපු ඒවයින් එකක් වත් එක්ක ගැලපෙන්නෙ නැති inputs අපි පරීක්ෂා කරන්නෙ එතනදි. මේ පියවර අත්යවශ්ය නෑ, ඒත් බොහෝවිට input error එකක් check කරගන්න මේ පියවර වැදගත් වෙනවා.
අපි බලමු අවශ්ය output එක ලැබෙයිද කියලා.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-case-2-android-wedakarayo.png)
හොඳයි එහෙනම් මේකෙ පුහුණු වීම් ඔබට පවරලා මම ඊළඟ කොටසට යනවා.
While
මේකෙන් අපි බලමු කිසියම් කේතයක් අපිට අවශ්ය වාරයක් නැවත නැවතත් run කරවාගන්න හැටි.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-while-1-android-wedakarayo.png)
මේ ස්ක්රිප්ට් එක අපි පැහැදිලි කරගනිමු. මුලින්ම අපි අරන් තියෙනවා counter කියලා variable එකක්. අපිට ඕන loop එක දහ පාරක් රන් කරවන්න නම්, ඒ දහ පාර එකයි, දෙකයි... ආදී වශයෙන් ගණන් කරන්නෙ මෙන්න මේ counter කියන variable එක. මේකට ඔයාට ඕන නමක් දාගන්න පුළුවන්. මම counter කියලා ගත්තේ අවබෝධය පහසු වෙන්න.
ඊළඟ line එකෙන් වෙන්නෙ counter එකේ අගය පරීක්ෂා කරන එක. Counter එකේ අගය 10 ට වඩා අඩු හෝ සමාන හැම වෙලාවෙම මේ loop එක run කරවන්න කියලා තමයි එතනින් කියලා තියෙන්නෙ.
do සහ done තියෙන්නෙ loop එකේ නැවත නැවතත් රන් කරවන්න අවශ්ය කරන කේත කොටස. මම මුලින් counter එකේ අගය echo කරලා තියෙනවා. පස්සෙ counter කියන variable එකට එකක් එකතු කරලා තියෙනවා. counter++ කියන්නෙ counter එකට එකක් එකතු කරන්න කියන එක. මෙන්න මේ කේත පේළිය නිසා තමයි counter එක එකින් එකට වැඩි වෙන්නෙ. එහෙමත් නැත්නම් එකයි, දෙකයි යනුවෙන් ගණන් කෙරෙන්නෙ.
අන්තිමේ මම Loop ended කියන එක echo කරලා තියෙනවා. Counter එකේ අගය 11 වුණ ගමන් loop එක run වෙන එක නතර වෙලා අන්තිමට තියෙන ඒ echo එක run වෙලා script එක නවතිනවා.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-while-2-android-wedakarayo.png)
මෙන්න output එක.
Until
While loop එකෙන් කරන දේම අපිට මේකෙන් කරගන්න පුළුවන්. වෙනස තමයි මේකෙ termination condition එක, එහෙමත් නැත්නම් නවත්තන්න ඕන කරන කොන්දේසිය ආපස්සට තිබීම. Code එක අධ්යනය කළොත් මේ වෙනස බලාගන්න පුළුවන්.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-until-1-android-wedakarayo.png)
මේකෙන් වෙන්නෙත් While loop එකේම වැඩේ නිසා ඒ හා සමාන output එකක් ලැබෙනවා.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-until-2-android-wedakarayo.png)
For
මේ loop එකෙනුත් වෙන්නෙ අර කලින් කළ දේ මයි. හැබැයි මේක කෙටියි, පහසුයි. තේරුම්ගන්න අමාරුයි වගේ පෙණුනට එහෙමත් නෑ.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-for-1-android-wedakarayo.png)
counter කියන්නෙ මම කලින් වගේම පාවිච්චි කරන ගණන් කිරීමේ variable එක. මේකෙ ඒ variables එක declare කරන්නෙත් loop එක ඇතුළෙමයි. ඊළඟට ඒක 10 ට වඩා අඩුද, සමානද කියලා පරීක්ෂා කරනවා. counter++ එක loop ඇතුළෙන් එලියට අරන් තිබුණත් වෙන්නෙ කලින් වුණ දේමයි. do done අතර කලින් වගේම code එක තියෙනවා.
මෙන්න output එක.
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-scripting-for-2-android-wedakarayo.png)
හොඳයි, එහෙනම් තොවිලෙ අවසාන කොටස් ළන් වෙනවා. තව කොටස් පහකින් වගේ තොවිලෙ ඉවර වේවි. නිතරම පුහුණු වෙන්න. කියලා දෙන දේට වඩා වැඩි දෙයක් තමන් තනිව කරන්න බලන්න. අනිවාර්යයෙන් Linux වැඩ්ඩෙක් වෙන්න පුළුවන්.
ගිහින් එන්නම්, ඔබට ජය!
![](https://backend.androidwedakarayo.com/content/images/2020/07/linux-terminal-function.jpg)