You are on page 1of 95

Linux Shell Scripting Essential By Yin Thu (Xero Cool)

ဒီစာအုပ္ေလးကေတာ့ Linux Ninja – Myanmar Page မွာ shell scripting အေၾကာင္း တင္ထားသ
မွ်ကို တစ္စုတစ္စည္းတည္း ျပန္ေပါင္းစပ္ထားတာပါ။ Basic Concept ေတြ၊ အထားအသို Syntax ေ
တြကို example သံုးဆယ့္ငါးခုနဲ ့ ရွင္းျပထားၿပီး လက္ေတြ ့ေလာကမွာ အသံုးျပဳႏိုင္တဲ့ script ေလးခု
ပါရွိပါတယ္။

ရွည္ရွည္ေဝးေဝးေတာ့ မေျပာေတာ့ပါဘူး။ shell scripting နဲ ့ ပတ္သက္လို ့ မသိမျဖစ္ သိသင့္တာေ


လးေတြ ပါဝင္တာမို ့ Essential လို ့ အမည္ေပးထားတာပါ။

စာအုပ္နဲ ့အတူ script file သံုးဆယ့္ကိုးခုကို ေလ့လာ ျပင္ဆင္ သံုးစြဲႏိုင္ဖို ့ ထည့္ေပးထားပါတယ္။

ဒီစာအုက္ေလးက စာဖတ္သူအတြက္ တစ္စံုတစ္ခု အက်ိဳးျပဳမယ္လို ့ ယူဆပါတယ္။

Print ထုတ္ၿပီး ဖတ္ပါလို ့ အဆိုျပဳပါရေစ။

ဒါပါပဲဗ်ာ။

Yin Thu (Xero Cool)


### introduction to shell scripting ###

ခုကစလို ့ က်ေနာ္တို ့ shell script အေၾကာင္း ေလ့လာၾကရေအာင္။

shell script အေၾကာင္း မေျပာခင္ user >> application >> shell >> kernel >> hardware ဆို
တဲ့ ဆက္သြယ္ခ်က္ကို အရင္သိထားဖို ့ လိုပါတယ္။

ဒီဆက္သြယ္ခ်က္မွာ shell ဟာ instruction အမွားေတြ kernel ဆီ ေရာက္မသြားဖို ့ ၾကားခံ ေဆာင္ရြ


က္ေပးပါတယ္။

shell ေတြ အမ်ိဳးမ်ိဳး ရွိတဲ့ အထဲမွာမွ bash shell ဟာ ထင္ရွားပါတယ္။ bash ရဲ့ အဓိပၸါယ္က bourne
again shell ပါ။

shell အမ်ိဳးအစားေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

1. Bash shell
2. Tcsh/Csh shell
3. Ksh shell
4. Zsh shell
5. Fish

ဟုတ္ၿပီ ဆက္ရေအာင္ !

၁။ shell script ဆိုတာ ဘာလဲ? ရည္မွန္းခ်က္ တရပ္ ၿပီးေျမာက္ဖို ့ လိုအပ္တဲ့ command ေတြကို စီ
ကာစဥ္ကာ၊ ဘာၿပီးရင္ ဘာလုပ္ပါ ဆိုတဲ့၊ script ပံုစံနဲ ့ ေရးသားထားၿပီး shell ကို အမွီျပဳကာ run
တာမို ့ သူ ့ကို shell script လို ့ ေခၚရတာပါ။

ဒီလို run ရာမွာ shell ဟာ command interpreter အျဖစ္ အလုပ္လုပ္ေပးပါတယ္။ ေျပာရရင္ shell
script ဆိုတာ linux မွာ ပါရွိတဲ့ commad ေတြကို အသံုးျပဳထားတဲ့၊ shell ကို အမွီျပဳၿပီး run ရတဲ့၊
program ေလး ၁ ခုပါပဲ။

၂။ shell scripting ဟာ programming language လား? Bash ဟာ programming language တ


စ္ခုပါပဲ။ comlpex task ေတြကို ၿပီးေျမာက္ဖို ့ script ေတြ ဖန္တီးႏိုင္တဲ့ scripting language သည္
လည္း programming language ျဖစ္တယ္လို ့ wkipedia က ဆိုပါတယ္။

၃။ shell script ၁ ခု ဘယ္လို အလုပ္လုပ္သလဲ။ သင္သတ္မွတ္ေပးလိုက္တဲ့ input ေတြကို သူက လ


က္ခံၿပီး shell ကိုအမွီျပဳကာ၊ commad ေတြနဲ ့ process အဆင့္ဆင့္ ေဆာင္ရြက္ပါတယ္။ အဲ့ဒါ ၿပီးရ
င္ေတာ့ သူက output တခုကို ထုတ္ေပးပါတယ္။

၄။ shell script ေတြကို ဘာေၾကာင့္ အသံုးျပဳရတာလဲ? အဓိကကေတာ့ အခ်ိန္ကုန္ သက္သာေစဖို ့နဲ ့


ရလာမယ့္ result ကို မိမိ စိတ္ႀကိဳက္ ပံုစံခ်ႏိုင္ဖို ့ပါ။ manual လုပ္လို ့ မရႏိုင္မယ့္ ရွဳပ္ေထြးတဲ့
complex task ေတြကို shell script ေတြက ေဆာင္ရြက္ေပးပါတယ္။ ဒါ့ေၾကာင့္ shell script ေတြကို
အသံုးျပဳရတာပါ။

၅။ shell script ေတြကို ဘယ္လို ေနရာမွာ သံုးလဲ? က်ေနာ့္ အေတြ ့ အႀကံဳအရေျပာရရင္၊ backup
process လို ေန ့စဥ္ ေဆာင္ရြက္ေနရတဲ့ အလုပ္ေတြ၊ Plugin ဖန္တီးတာေတြ၊ complex task ေတြ၊ စ
သည္ျဖင့္ ဒီလို ေနရာေတြမွာ သံုးပါတယ္။

၆။ advantages ေကာင္းက်ိဳးက ဘာေတြလဲ?

1. ပံုမွန္ manual လုပ္ေနရတာေတြကို auto ခိုင္းေစႏိုင္မယ္။


2. command series ေတြကို single command အျဖစ္ run ႏိုင္မယ္။ ကိုယ္ပိုင္ စိတ္ႀကိဳက္
customized command ေတြ လုပ္လို ့ ရတဲ့ သေဘာေပါ့။
3. အသံုးျပဳရ လြယ္ကူမယ္။
4. portable ျဖစ္မယ္။ linux system တခုကေနတခုဆီ ကူးေျပာင္း အသံုးျပဳႏိုင္မယ္။
၇။ disadvantages ဆိုးက်ိဳးက ဘာေတြလဲ?

1. အျခား programming language ေတြထက္ execution speed ေႏွးပါတယ္။


2. shell ထဲက command တခု executed လုပ္ခံရတိုင္း process တခု ေပၚေပၚလာတာပဲ ျဖစ္ပါတ
ယ္။

၈။ shell scripting ဟာ ေလ့လာဖို ့ ခက္သလား? ခက္သလားေမးရင္ မခက္ပါဘူး။ လြယ္သလားဆိုေ


တာ့လည္း အရမ္းေတာ့ မလြယ္ပါဘူး။ linux အေျခခံ ရွိမယ္။ command ေတြကို ကြ်မ္းက်င္မယ္။
programming concept ရွိမယ္။ ဒါဆို shell script ေတြ ေရးရတာ ေပ်ာ္စရာေကာင္းပါတယ္။

ခုေလာက္ဆို shell script နဲ ့ ပတ္သက္လို ့ သူဟာဘာလဲ သိေလာက္ပါၿပီေနာ္။

ေနာက္လာမယ့္ topics ေတြမွာ shell script ေတြကို လြယ္ကူတဲ့အပိုင္းကေန ဖန္တီးရင္း ျဖည္းျဖည္း


ခ်င္း ခ်ီတက္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

PS --> [ Post ကို ႏွစ္သက္လ်ွင္ Like, Comment, Share လုပ္ႏိုင္ပါတယ္။ Page မွာ တင္သမ်ွ ျမင္
ရဖို ့ Page ကို Like အျပင္ see first လုပ္ထားရန္ လိုအပ္ပါတယ္ ]

Yin Thu
(23-4-2019)

++ [ date and time ] script-02 ++

ခုတခါ date and time ကို ေဖၚျပမယ့္ script ကို ဖန္တီးၾကည္ရေ


့ အာင္။
ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က command ေတြကို variable ေတြနဲ ့ ကိုယ္စားျပဳတတ္ဖို ့ပါ။

ေနာက္တစ္ခ်က္က daily backup လုပ္တဲ့အခါ၊ backup file ေတြကို script သံုးၿပီး၊ အမည္ေတြကို
date အလိုက္ မတူေအာင္ စီၿပီး၊ အလိုေလ်ာက္ သိမ္းလိုတဲ့အခါ ဒီ script ေလးကေန ရလာတဲ့ အယူ
အဆ concept ေတြကို အသံုးခ်တတ္ဖို ့ပါ။ ဒီအခ်က္က အသက္ပါ။

ဥပမာ၊ ဒီေန ့ backup လုပ္တဲ့ file အမည္က ဒီေန ့ date ေလးနဲ ့။ နက္ဖန္ backup လုပ္တဲ့ file အမ
ည္က နက္ဖန္ date ေလးနဲ ့။ အဲ့လိုေပါ့။

ကဲ ! စရေအာင္။

vi 02date_time.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

dt=$(date)

day=$(date +%d)
month=$(date +%m)
year=$(date +%Y)

hour=$(date +%H)
minute=$(date +%M)
second=$(date +%S)
period=$(date +%p)

echo -e "$dt\n"

echo "Hello $USER !"


echo "current date is : $day-$month-$year"
echo "current time is : $hour-$minute-$second-$period"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
dt=$(date) သည္ date ဆိုတဲ့ command ကို dt ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။
command ေတြကို variable အျဖစ္ ေၾကျငာတဲ့အခါ variable=$(command) ဆိုတဲ့ format ကို သံုး
ပါတယ္။

day=$(date +%d) သည္ date and time ထဲကမွ date တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို day ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

month=$(date +%m) သည္ date and time ထဲကမွ month တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို month ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

year=$(date +%Y) သည္ date and time ထဲကမွ year တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို year ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

hour=$(date +%H) သည္ date and time ထဲကမွ hour တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို hour ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

minute=$(date +%M) သည္ date and time ထဲကမွ minute တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို minute ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

second=$(date +%S) သည္ date and time ထဲကမွ second တခုတည္းကို ကြက္ၿပီး ဆြဲထုတ္တဲ့
command ကို second ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

period=$(date +%p) သည္ date and time ထဲကမွ AM လား? PM လား? ဆိုတဲ့ အပိုင္းကို ကြက္ၿ
ပီး ဆြဲထုတ္တဲ့ command ကို period ဆိုတဲ့ variable အျဖစ္ ေၾကျငာလိုက္တာပါ။

ဒီေလာက္ဆို command ေတြကို variable အျဖစ္ ေၾကျငာတာာကို နားလည္မယ္ ထင္ပါတယ္။ ဒီေန


ရာမွာ day, month, year, ... စတဲ့ variable အမည္ေတြကို ကိုယ္ႀကိဳက္တာ ေပးလို ့ ရပါတယ္ေနာ္။
ဥပမာ၊ thisday, thismonth, thisyear, thishour,.. စသည္ျဖင့္ေပါ့။

ဆက္ရွင္းရရင္ -->

echo -e "$dt\n" သည္ dt ဆိုတဲ့ variable ကို သံုးၿပီး သူကိုယ္စားျပဳထားတဲ့ date command ကို
run ၿပီး output ကို ေဖၚျပေပးပါတယ္။ \n ကေတာ့ ေဖၚျပၿပီးရင္ ေအာက္ကို စာတေၾကာင္းစာ ဆင္းမ
ယ္ n (new line) ဆိုတဲ့ အဓိပၸါယ္ပါ။ -e ဆိုတဲ့ option ကေတာ့ \n ကို output ထဲ ထည့္မေဖၚျပေ
အာင္ ေဖ်ာက္ေပးတာပါ။

echo "Hello $USER !" သည္ $USER ဆိုတာကို ယူသံုးၿပီး လက္ရွိ current user ရဲ့ အမည္ကို ေဖၚျ
ပေပးပါတယ္။
echo "current date is : $day-$month-$year" သည္ variable ေတြကို ခ်ိတ္ဆက္ၿပီး လက္ရွိ
date ရက္စြဲကို ေဖၚျပေပးပါတယ္။

echo "current time is : $hour-$minute-$second-$period" သည္ variable ေတြကို ခ်ိတ္ဆက္ၿ


ပီး လက္ရွိ time အခ်ိန္ကို ေဖၚျပေပးပါတယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 02date_time.sh

ဒီ 02date_time.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 03date_time.sh

သို ့မဟုတ္

./02date_time.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ date and time ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(24-4-2019)
++ [ adding numeric value ] script-03 ++

ခုတခါ comment မွတ္ခ်က္ေတြ ပါတဲ့၊ ကိန္းဂဏန္းေတြကို ေပါင္းမယ့္ script ကို ဖန္တီးၾကည္ရေ


့ အာ
င္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က script ထဲမွာ comment မွတ္ခ်က္ေတြ ဘယ္လိုေရးတယ္ဆိုတာ


သိဖို ့၊ ကိန္းဂဏန္းေတြကို ေပါင္းတဲ့ syntax ကို သိဖို ့ရယ္ပါ။

ကဲ ! စရေအာင္။

vi 03sum.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

# adding two numeric value


((sum=10+20))

# print the result


echo "the result is : $sum"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

# adding two numeric value သည္ မွတ္ခ်က္ပါ။ single line comment လို ့ ေခၚပါတယ္။ script
ထဲမွာ # သေကၤတ ေနာက္ကေန ေရးထားတဲ့ စာသားေတြသည္ comment မွတ္ခ်က္ေတြပါ။ ကိုယ္
ဘယ္ဟာကို ဘာ့အတြက္ ေရးထားေၾကာင္း ကိုယ့္ဖါသာ မွတ္မိေအာင္ ေရးထားတာပါ။ run တဲ့ အထဲ
မပါပါဘူး။

((sum=10+20)) မွာ sum သည္ variable ပါ။ sum ဆိုတဲ့ စကားလံုးအစား မိမိ ႏွစ္သက္ရာ ေပးႏိုင္
ပါေသးတယ္။ သူက 10 နဲ ့ 20 ေပါင္းျခင္း ရလဒ္ကို ကိုယ္စားျပဳတဲ့ variable ပါ။ ဒီေနရာမွာ သတိျပဳရ
မွာက (( ..... )) ပါ။ scrip ထဲမွာ ေပါင္းျခင္း၊ ႏွဳတ္ျခင္းေတြကို (( ..... )) လက္သဲကြင္း ၂ ခုထဲ ထည့္ေ
ရးရပါတယ္။ ဒါမွ result အမွန္ရမွာပါ။

# print the result သည္လည္း comment မွတ္ခ်က္ ၁ ခု ပါပဲ။


echo "the result is : $sum" သည္ sum ဆိုတဲ့ variable ရဲ့ ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို ေဖၚျပခို
င္းလိုက္တာပါ။ variable ေတြကို ယူသံုးတဲ့အခါ $ သေကၤတ ထည့္ေပးရပါတယ္။ ဒီေနရာမွာ $sum
သည္ 10 နဲ ့ 20 ေပါင္းျခင္းရဲ့ ရလဒ္ကို ေဖၚျပပါလိမ့္မယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 03sum.sh

ဒီ 03sum.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 03sum.sh

သို ့မဟုတ္

./03sum.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ comment ေရးျခင္းနဲ ့ ေပါင္းျခင္းဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(26-4-2019)
++ [ reading the input value ] script-04 ++

အခု script ေလးကေတာ့ ယခင္ ေဖၚျပခဲ့တဲ့ script-03 ကို ထပ္မံ ျပင္ဆင္ထားတာပါ။

သူက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ run လိုက္တဲ့အခါ user ကို ပထမအႀကိမ္ ကိန္းဂဏန္း ၁


ခု input အျဖစ္ ထည့္ခိုင္းပါတယ္။ ထည့္ေပးလိုက္တဲ့အခါ၊ ဒုတိယအႀကိမ္ ေနာက္ကိန္းဂဏန္း ၁ ခုကို
input ထပ္ေတာင္းပါတယ္။ ၿပီးရင္ ကိန္း ၂ ခုရဲ့ ေပါင္းျခင္း တန္ဖိုးကို ရလဒ္ အျဖစ္ သူက ထုတ္ေပးမွာ
ပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ input ေတြကို ဘယ္လို read ဖတ္ယူ၊ ဖမ္းယူမလဲ? သူတို ့ကို
variable နဲ ့ ဘယ္လို ကိုယ္စားျပဳမလဲ? သိဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 04reading_input.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း


ပါ။

#!/bin/bash

# enter first numeric value


echo "enter first value"
read first

# enter second numeric value


echo "enter second value"
read second

# adding two numeric value


((sum=$first+$second))

#print the result


echo "the result is : $sum"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
[ echo "enter first value"
read first ] မွာ echo သည္ enter first value ဆိုတဲ့ စာသားကို ျပသေပးရံုပါ။ read သည္ ကြက္လ
ပ္ input တစ္ခုကို ဖန္တီးၿပီး အဲ့အထဲ ထည့္လိုက္တဲ့ value ကို first ဆိုတဲ့ variable အျဖစ္ ဖတ္ယူ၊
ဖမ္းယူ လိုက္ပါေတာ့တယ္။

[ echo "enter second value"


read second ] မွာ echo သည္ enter second value ဆိုတဲ့ စာသားကို ျပသေပးရံုပါ။ read သည္
ကြက္လပ္ input တစ္ခုကို ဖန္တီးၿပီး အဲ့အထဲ ထည့္လိုက္တဲ့ value ကို second ဆိုတဲ့ variable အျဖ
စ္ ဖတ္ယူ၊ ဖမ္းယူ လိုက္ပါေတာ့တယ္။

((sum=$first+$second)) <-- ဒါကေတာ့ ရွင္းပါတယ္။ ဖမ္းယူထားတဲ့ variable ၂ ခုကို သံုးၿပီး သူ


တို ့ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးေတြကို ေပါင္းလိုက္တာပါ။ ေပါင္းလို ့ ရလာတဲ့ တန္ဖိုးကိုေတာ့ sum အ
မည္ရ variable နဲ ့ ဖမ္းယူထားလိုက္ပါေတာ့တယ္။

echo "the result is : $sum" <-- ဒါကေတာ့ $sum ဆိုတဲ့ variable ကို သံုးၿပီး သူကိုယ္စားျပဳထား
တဲ့၊ ေပါင္းလို ့ ရလာတဲ့ ရလဒ္ကို ေဖၚျပေပးတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 04reading_input.sh

ဒီ 04reading_input.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 04reading_input.sh

သို ့မဟုတ္

./04reading_input.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ input ေတြကို ဖမ္းယူျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(24-4-2019)

++ [ combining string ] script-05 ++

ခုတခါ စာသား string ေတြကို တစ္ခုနဲ တ


့ စ္ခု ေပါင္းစပ္တဲ့ shell script ေလး ဖန္တီး ၾကည္ရေ
့ အာင္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ string ေတြကို ေပါင္းစပ္တတ္ဖို ့ပါ။

vi 05combine_string.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြ


င္းပါ။

#!/bin/bash

string1="Linux"
string2="Ninja"
string3="Myanmar"
echo -e "$string1 $string2 $string3\n"

string4="$string1 $string2 $string3"


string4+=" is a good linux community"
echo "$string4"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

string1="Linux" မွာ string1 သည္ variable ပါ။ Linux ဆိုတဲ့ စာသား string ကို ကိုယ္စားျပဳတဲ့
variable ေပါ့။

string2="Ninja" မွာ string2 သည္ variable ပါ။ Ninja ဆိုတဲ့ စာသား string ကို ကိုယ္စားျပဳတဲ့
variable ေပါ့။

string3="Myanmar" မွာ string3 သည္ variable ပါ။ Myanmar ဆိုတဲ့ စာသား string ကို ကိုယ္
စားျပဳတဲ့ variable ေပါ့။

echo -e "$string1 $string2 $string3\n" သည္ $string1 $string2 $string3 စတဲ့ variable ေတြ
ကို ယူသံုးၿပီး စာတစ္ေၾကာင္းတည္းအျဖစ္ ေပါင္းစပ္ေဖၚျပေပးလိုက္တာပါ။ \n ကေတာ့ ေအာက္တ
စ္ေၾကာင္းဆင္းဖို ့ သံုးတဲ့ operator ပါ။ -e ကေတာ့ \n ကို အသက္ဝင္ေစတဲ့ option ပါ။

string4="$string1 $string2 $string3" သည္ $string1\2\3 ေတြကို စာတစ္ေၾကာင္းတည္းအျဖစ္


ေပါင္းထားတဲ့၊ variable ပါ။

string4+=" is a good linux community" မွာ += သည္ အသက္ပါ။ string4 ကိုယ္စားျပဳထားတဲ့


မူလတန္ဖိုးမွာ is a good linux community ဆိုတဲ့ စာသားကို ထပ္ေပါင္းမယ္လို ့ အဓိပၸါယ္ရပါတယ္။

echo "$string4" သည္ $string4 ကိုယ္စားျပဳထားတဲ့ ေနာက္ဆံုးတန္ဖိုးကို ေဖၚျပေပးလိုက္တာပါ။

[ ဒီေနရာမွာ စကားမစပ္ တစ္ခု ျဖတ္ေျပာခ်င္တာက၊ variable ေတြကေန ကိုယ္စားျပဳထားတဲ့ ကိန္းဂ


ဏန္း၊ စာသား စတဲ့ value တန္ဖိုးေတြကို argument လို ့ ေခၚပါတယ္။ ဒါေလးကို မွတ္ထားေပးပါ။ ]

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x combine_string.sh

ဒီ combine_string.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 05combine_string.sh

သို ့မဟုတ္

./05combine_string.sh
run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ string ေတြကို ေပါင္းစပ္ျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(27-4-2019)

++ [ get substring from main string ] script-06 ++

ခုတခါ main string မူလစာသားအရွည္ ထဲကေနမွ မိမိစိတ္ႀကိဳက္ substring စကားစု ၁ ခုကို ဆြဲထု
တ္ၾကည္ရေ
့ အာင္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က ရလာတဲ့ output ထဲကေန ကိယ


ု ့္စိတ္ႀကိဳက္ စကားစုေတြကို သီးသ
န္ ့ ဆြဲထုတ္ ေဖၚျပတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 06get_substring.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း


ပါ။

#!/bin/bash
mainstring="Learn Linux from google"
substring=${mainstring:17:6}
echo $substring

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

mainstring="Learn Linux from google" မွာ mainstring အမည္ရ variable သည္ Learn Linux
from google ဆိုတဲ့ စာသားကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။

substring=${mainstring:17:6} မွာ substring အမည္ရ variable သည္ ${mainstring:17:6}


ကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။ ${mainstring:17:6} ဆိုတာ ဘာလဲ? Learn Linux from
google ကို sapce ေတြပါ မခ်န္ပဲ ေရတြက္ၾကည့္ရင္ ၂၃ လံုး ရွိတယ္။ ဒီထဲကမွ google ဆိုတဲ့ စကား
လံုးေလးကို ဆြဲထုတ္ခ်င္တာ။ google သည္ ၁၈ လံုးေျမာက္မွာ စတယ္။ အဲ့ေတာ့ 17 --> ၁၇ လံုးေျ
မာက္ထိကို ဖယ္ပစ္လိုကတ ္ ယ္။ 6 --> google သည္ စာလံုးေရ ၆ လံုး ရွိတယ္။ အဲ့ေတာ့ ၁၈ လံုးေျ
မာက္ကေန ၆ လံုးထိ ယူမယ္လို ့ သတ္မွတ္ေပးလိုက္တယ္။ ဒီေလာက္ဆို ${mainstring:17:6} ကို
နားလည္ၿပီ ထင္ပါတယ္။

echo $substring ဆိုတာကေတာ့ ရွင္းပါတယ္။ $substring အမည္ရ variable ကို ယူသံုးၿပီး သူကို
ယ္စားျပဳထားတဲ့ တန္ဖိုး google ဆိုတဲ့ စကားလံုးကို ေဖၚျပခိုင္းလိုက္တာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 06get_substring.sh

ဒီ 06get_substring.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 06get_substring.sh

သို ့မဟုတ္

./06get_substring.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။


https://mega.nz/…

က်ေနာ္တို ့ရဲ့ substring ေတြကို ဆြဲထုတ္ျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(27-4-2019)

++ [ if then else statement ] script-07 ++

ခုတခါ if then else ဆိုတဲ့ statement အေၾကာင္း ေလ့လာၾကမယ္။

သူက ဘယ္လို အလုပ္လုပ္ေပးသလဲ ဆိုေတာ့၊ ထည့္သြင္းလိုက္တဲ့ input ေပၚမူတည္ၿပီး၊ ဘာျဖစ္ခဲ့လွ်


င္ ဘာလုပ္ပါ။ ဘာမျဖစ္ခဲ့လွ်င္ေတာ့ ဘာလုပ္ပါ။ input က ဘာဆိုရင္ ဘယ္ command ကို run ပါ။
input က ဘာမဟုတ္ခဲ့ရင္ ဘယ္ command ကို run ပါ။ စသည္ျဖင့္ output ျပန္ထုတ္ေပးပါတယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က မတူညီကြဲျပားတဲ့ input ေတြကို လိုက္ေလ်ာညီေထြ ကိုင္တြယ္ေျဖရွ


င္းတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 07if_then_else.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း


ပါ။

#!/bin/bash
echo "enter the value"
read n
if [ $n -lt 10 ];
then
echo "It is a one digit number"
else
echo "It is a two digit number"
fi

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "enter the value" သည္ enter the value ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။

read n မွာ read သည္ input တစ္ခုကို ထည့္ခိုင္းၿပီး အဲဒီ input ကို n တဲ့ variable အျဖစ္ ဖမ္းယူလို
က္တာပါ။

if [ $n -lt 10 ]; မွာ n ဆိုတဲ့ variable ရဲ့ တန္ဖိုးသည္ 10 ထက္ ငယ္ရင္လို ့ သတ္မွတ္ေပးလိုက္တာ


ပါ။ ဒီေနရာမွာ -lt သည္ less than လို ့ အဓိပၸါယ္ရပါတယ္။ -gt ဆိုရင္ greater than, -eq ဆိုရင္
equality, -ne ဆိုရင္ not equality လို ့ အဓိပၸါယ္ရပါတယ္။ ဒါကို မွတ္ထားေပးပါ။ [ … ]; ဆိုတဲ့
syntax ကိုလည္း မွတ္ထားပါ။ space ေလးေတြပါတာ ; ပါတာက အစ ဂရုျပဳပါ။

then
echo "It is a one digit number" ကေတာ့၊ ထည့္လက ို ္တဲ့ value သည္ if statement မွာ သတ္မွ
တ္ထားသလို 10 ထက္ ငယ္ခဲ့ရင္ It is a one digit number ဆိုတဲ့ စာသားကို ေဖၚျပေပးတာပါ။
input ေတာင္းရင္ 5 လို ့ ထည့္ၾကည့္ပါ။

else
echo "It is a two digit number" ကေတာ့၊ ထည့္လိုက္တဲ့ value သည္ if statement မွာ သတ္မွ
တ္ထားသလို မဟုတ္ပဲ 10 သို ့မဟုတ္ 10 ထက္ ႀကီးခဲ့ရင္ It is a two digit number ဆိုတဲ့ စာသား
ကို ေဖၚျပေပးတာပါ။ input ေတာင္းရင္ 10 သို ့မဟုတ္ 15 လို ့ ထည့္ၾကည့္ပါ။

အဲဒီမွာ 100 လို ့ ထည့္ၾကည့္တဲ့ အခါ ဘယ္လို ျပလိမ့္မလဲ? two digit number လို ့ပဲ ျပပါလိမ့္မယ္။
အမွန္က three digit number လို ့ ျပသင့္တာပါ။ ဒါေပမယ့္ if then else မွာ မတူကြဲျပားမွဳ ၂ ခုထက္
ပိုေဖၚျပလို ့ မရပါဘူး။ မတူကြဲျပားမွဳ ၂ ခုထက္ ပိုေဖၚျပေစခ်င္ရင္ if elseif else ဆိုတဲ့ statement ကို
အသံုးျပဳမွ အဆင္ေျပပါမယ္။ if elseif else အေၾကာင္းကို ေနာက္လာမယ့္ example မွာရွင္းျပေပးပါ့မ
ယ္။
fi ဆိုတာကေတာ့ if statement ကို ျပန္ပိတ္ေပးလိုက္တာပဲ ျဖစ္ပါတယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 07if_then_else.sh

ဒီ 07if_then_else.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 07if_then_else.sh

သို ့မဟုတ္

./07if_then_else.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ if then else ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(28-4-2019)

++ [ if then elif else statement ] script-08 ++


ခုတခါ if then elif else အေၾကာင္း ေလ့လာၾကည္ရေ
့ အာင္။

ယခင္ ေဖၚျပခဲ့တဲ့ if then else နဲ ့ မတူတာက elif ဆိုတာေလး ပိုလာတာပါ။ elif ဆိုတာ else if ရဲ့
အတိုေကာက္ပါ။ အဲဒီ elif ေၾကာင့္ မတူညီတဲ့ input ေတြ အမ်ားႀကီးကို ကိုင္တြယ္ေျဖရွင္းႏိုင္လာပါတ
ယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က မတူညီကြဲျပားတဲ့ input ေတြကို လိုက္ေလ်ာညီေထြ ကိုင္တြယ္ေျဖရွ


င္းတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 08if_then_elif_else.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရး


သြင္းပါ။

#!/bin/bash

echo "Enter your lucky number"


read n

if [ $n -le 5 ];
then
echo "You got 1st prize"

elif [ $n -ge 6 ];
then
echo "You got 2nd prize"

else
echo "Please insert the number"
fi

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "Enter your lucky number" ကေတာ့ Enter your lucky number ဆိုတဲ့ စာသားကို ေဖၚျပေ
ပးတာပါ။
read n သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့အခါ အဲ့ဒီ input ကို n အမည္ရ variable အျ
ဖစ္ ဖမ္းယူလိုက္ပါတယ္။

if [ $n -le 5 ]; ကေတာ့ ရွင္းပါတယ္။ $n ကိုယ္စားျပဳထားတဲ့ ဂဏန္းသည္ 5 နဲ ့ တူရင္ သို ့မဟုတ္ 5


ထက္ ငယ္ရင္လို ့ အဓိပၸါယ္ရပါတယ္။ -le သည္ less than or equal ပါ။

then
echo "You got 1st prize" သည္ အထက္က if statement နဲ ့ ကိုက္ညီရင္ You got 1st prize ဆို
တဲ့ စာသားကို ျပသပါလိမ့္မယ္။

elif [ $n -ge 6 ]; ဒီေနရာမွာ elif ပါလာပါၿပီ။ မတူတဲ့ အေျခအေန ေနာက္တခုကို ေဖၚျပဖို ့ပါ။ $n ကို
ယ္စားျပဳထားတဲ့ ဂဏန္းသည္ 6 နဲ ့ တူရင္ သို ့မဟုတ္ 6 ထက္ ႀကီးရင္လို ့ အဓိပၸါယ္ရပါတယ္။ -ge
သည္ greater than or equal ပါ။

then
echo "You got 2nd prize" သည္ အထက္က elif statement နဲ ့ ကိုက္ညီရင္ You got 2nd prize
ဆိုတဲ့ စာသားကို ျပသပါလိမ့္မယ္။

else ကေတာ့ အဆံုးသတ္ပါ။ အထက္မွာ ေဖၚျပထားတဲ့ if statement ေတြ elif statement ေတြ၊ တ
ခုမွ မကိုက္ညီတဲ့အခါ Please insert the number ဆိုတဲ့ စာသားကို ေဖၚျပပါလိမ့္မယ္။ စမ္းၾကည့္လို
ရင္ input ေတာင္းတဲ့အခါ ဂဏန္းမထည့္ပဲ hello လို ့ ရိုက္ထည့္ၾကည့္ပါ။

fi ဆိုတာကေတာ့ if statement ကို ျပန္ပိတ္ေပးလိုက္တာပဲ ျဖစ္ပါတယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 08if_then_elif_else.sh

ဒီ 08if_then_elif_else.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 08if_then_elif_else.sh

သို ့မဟုတ္

./08if_then_elif_else.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။


source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ if then elif else ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(29-4-2019)

++ [ if statement with AND Logic ] script-09 ++

ခုတခါ if statement မွာ && ဆိုတဲ့ logic ေလး တြဲသံုးတဲ့အပိုင္းကို သြားၾကမယ္။

&& ကို ဘယ္ေနရာမွာ သံုးလဲဆိုေတာ့ ၁ ခုထက္ ပိုတဲ့ လိုလားခ်က္ေတြနဲ ့ ကိုက္ညီေစခ်င္တဲ့ အခါ


သံုးပါတယ္။ ဥပမာ၊ အသားလည္း ျဖဴရမယ္။ ေခ်ာလည္း ေခ်ာရမယ္။ ပိုက္ဆံလည္း ရွိရမယ္။ အဲ့အခ်
က္ေတြနဲ ့ ကိုက္ညီမွသာလွ်င္ လက္ခံမယ္။ စသည္ျဖင့္ေပါ့ေနာ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က ၁ ခုထက္ ပိုတဲ့ လိလ


ု ားခ်က္ေတြ အတြက္ AND Logic ေလးကို တြဲ
သံုးတတ္ေစဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 09if_and.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo "Enter username"


read username
echo "Enter pin"
read pin

echo "Enter password"


read password

if [[ ( $username -eq "admin" && pin -eq "12345" && $password -eq "secret" ) ]];

then
echo "valid user"

else
echo "invalid user"

fi

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

read username မွာ read သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက


ို ္တဲ့ တန္ဖိုးကို username ဆို
တဲ့ variable အျဖစ္ ဖမ္းယူလိုက္တာပါ။

read pin မွာ read သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက


ို ္တဲ့ တန္ဖိုးကို pin ဆိုတဲ့ variable အျ
ဖစ္ ဖမ္းယူလိုက္တာပါ။

read password မွာ read သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့ တန္ဖိုးကို password ဆို
တဲ့ variable အျဖစ္ ဖမ္းယူလိုက္တာပါ။

if [[ ( $username -eq "admin" && pin -eq "12345" && $password -eq "secret" ) ]]; ဒီ
စာေၾကာင္းေလးက အသက္ပါ။ အခ်က္ ၃ ခ်က္နဲ ့ ကိုက္ညီဖို ့ && နဲ ့ တိုက္စစ္ထားပါတယ္။ && ရဲ့
အဓိပၸါယ္က ႏွင့္တူရမည္။ အခ်က္ ၃ ခ်က္နဲ ့ တူရမည္ေပါ့။ username က admin ျဖစ္ရမယ္။ pin က
12345 ျဖစ္ရမယ္။ password က secret ဆိုတဲ့ စကားလံုး ျဖစ္ရမယ္။ ဒီ ၃ ခ်က္နဲ ့ ညီရမယ္ေပါ့ေနာ္။
ဒီေနရာမွာ -eq သည္ equality ပါ။ == နဲ ့ တူတူပါပဲ။ [[ ( ..... ) ]]; ဒီ syntax ေလးကိုလည္း မွတ္
ထားပါ။ space ေလးေတြ ; ေတြက အစ ဂရုျပဳ ေရးသားပါ။ မလြဲပါေစနဲ ့။
then
echo "valid user" ကေတာ့ ရွင္းပါတယ္။ if statement က အခ်က္ ၃ ခ်က္ နဲ ့ ညီလွ်င္ valid user
ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးမွာပါ။

else
echo "invalid user" ကေတာ့ အဆံုးသတ္ပါ။ အခ်က္ ၃ ခ်က္နဲ ့ မကိုက္ညီလွ်င္ invalid user ဆိုတဲ့
စာသားေလးကို ေဖၚျပပါလိမ့္မယ္။

fi ဆိုတာကေတာ့ if statement ကို ျပန္ပိတ္ေပးလိုက္တာပဲ ျဖစ္ပါတယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 09if_and.sh

ဒီ 09if_and.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 09if_and.sh

သို ့မဟုတ္

./09if_and.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ if နဲ ့ AND Logic ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(29-4-2019)
++ [ if statement with OR Logic ] script-10 ++

ခုတခါ if ကို OR Logic ေလးနဲ ့ တြဲသံုးတဲ့ အေၾကာင္းကို ေလ့လာၾကတာေပါ့။ OR ရဲ့ သေကၤတက ||


ဆိုတဲ့ တုတ္ေခ်ာင္းေလး ၂ ေခ်ာင္းပါ။ OR ဆိုေတာ့ သို ့မဟုတ္ေပါ့။

ရုပ္ေခ်ာရမယ္။ သို ့မဟုတ္ ပိုက္ဆံ ရွိရမယ္။ ဒီ ၂ ခ်က္ထဲက ၁ ခ်က္နဲ ့ ညီရင္ အေျဖေပးမယ္။ ဒီလို
သေဘာတရားေပါ့။

|| သူ ့ကို statement ေတြ ၾကားထဲမွာ ထားေပးရပါတယ္။ ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့ ထည့္


လိုက္တဲ့ input သည္ ပထမ statement နဲ ့ တူညီရင္၊ သို ့မဟုတ္ ဒုတိယ statement နဲ ့ တူညီရင္
ဘယ္ command ကို run မယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ မတူညီေပမယ့္ လက္ခံေပးလို ့ရတဲ့ input ေတြကို ကိုင္တြ


ယ္ေျဖရွင္းတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 10if_or.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo "Enter any number"


read n

if [[ ( $n -eq 10 || $n -eq 20 ) ]];

then
echo "You won the game"
else
echo "You lost the game"

fi

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

read n မွာ read သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက


ို ္တဲ့ တန္ဖိုးကို n ဆိုတဲ့ variable အျဖစ္
ဖမ္းယူလိုက္တာပါ။

if [[ ( $n -eq 10 || $n -eq 20 ) ]] ဆိုတာကေတာ့ ထည့္လိုက္တဲ့ input ကို ကိုယ္စားျပဳထားတဲ့


$n သည္ 10 နဲ ့ ညီရင္၊ သို ့မဟုတ္ 20 နဲ ့ ညီရင္လို ့ အဓိပၸါယ္ရပါတယ္။ -eq သည္ equality ပါ။ ||
သည္ သို ့မဟုတ္ပါ။ [[ ( ..... ) ]]; ဒီ syntax ေလးကိုလည္း မွတ္ထားပါ။ space ေလးေတြ ; ေတြက
အစ ဂရုျပဳ ေရးသားပါ။ မလြဲပါေစနဲ ့။

then
echo "You won the game" ဆိုတာကေတာ့ ထည့္လိုက္တဲ့ input ကို ကိုယ္စားျပဳထားတဲ့ $n သည္
10 သို ့မဟုတ္ 20 နဲ ့ တူညီခဲ့လွ်င္ You won the game ဆိုတဲ့ စာသားကို ေဖၚျပေပးမွာပါ။

else
echo "You lost the game" ဒါကေတာ့ အဆံုးသတ္ပါ။ ထည့္လိုက္တဲ့ input ကို ကိုယ္စားျပဳထားတဲ့
$n သည္ 10 သို ့မဟုတ္ 20 နဲ ့ မတူညီခဲ့လွ်င္ You lost the game ဆိုတဲ့ စာသားကို ေဖၚျပေပးမွာ
ပါ။

fi ဆိုတာကေတာ့ if statement ကို ျပန္ပိတ္ေပးလိုက္တာပဲ ျဖစ္ပါတယ္။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 10if_or.sh

ဒီ 10if_or.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 10if_or.sh
သို ့မဟုတ္

./10if_or.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ if နဲ ့ OR Logic ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(30-4-2019)

++ [ case statement ] script-11 ++

ခုတခါ ဆက္ေလ့လာမွာကေတာ့ case statement ပါ။ if statement လိုပါပဲေနာ္။

သူက ဘယ္လို အလုပ္လုပ္သလဲ? ဆိုေတာ့ --> case statement မွာ ကိုယ္လို ခ်င္တဲ့ တန္ဖိုးေတြကို
ႀကိဳတင္သတ္မွတ္ေပးထားရပါတယ္။ ထည့္လိုက္တဲ့ input ေတြကို ႀကိဳသတ္မွတ္ထားတဲ့ တန္ဖိုးေတြ
နဲ ့ တိုက္စစ္ၿပီး result/output ေတြကို ထုတ္ေပးပါတယ္။ တခုမွ မကိုက္ညီရင္လည္း မကိုက္ညီေၾကာ
င္း try again စသည္ျဖင့္ result/output မ်ိဳးကို ထုတ္ေပးတယ္ေပါ့ေနာ္။

ဒီ script ေလးကေတာ့ မတူညီတဲ့ input အမ်ိဳးမ်ိဳး အတြက္ မတူညီတဲ့ result/output ေတြ ဖန္တီးေ
ပးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။
vi 11case.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo "Enter your lucky number between 1 and 3"


read n

case $n in

1)
echo echo "You got 1st prize" ;;

2)
echo "You got 2nd prize" ;;

3)
echo "You got 3rd prize" ;;

*)
echo "Sorry, try for the next time" ;;

esac

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "Enter your lucky number between 1 and 3" သည္ အထူးအဆန္း မဟုတ္ပါ။ Enter
your lucky number between 1 and 3 ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးတာပါ။

read n မွာ read သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက


ို ္တဲ့ တန္ဖိုးကို n ဆိုတဲ့ variable အျဖစ္
ဖမ္းယူလိုက္တာပါ။

case $n in ဆိုတာကေတာ့ ထည့္လိုက္တဲ့ input ကို ကိုယ္စားျပဳတဲ့ $n ရဲ့ တန္ဖိုးသည္ ေအာက္ပါ


အခ်က္ေတြထဲက တခုခုနဲ ့ တူခဲ့လွ်င္ဆိုၿပီး case statement ကို စဖြင့္လိုက္တာပါ။
1)
echo echo "You got 1st prize" ;; ဒါကေတာ့ ထည့္လိုက္တဲ့ input သည္ 1 ဆိုရင္ You got 1st
prize ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးတာပါ။ အဆံုးမွာ ;; ႏွစ္ခုပါတာကို ဂရုျပဳပါ။

2)
echo echo "You got 2nd prize" ;; ဒါကေတာ့ ထည့္လက ို ္တဲ့ input သည္ 2 ဆိုရင္ You got 1st
prize ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးတာပါ။ အဆံုးမွာ ;; ႏွစ္ခုပါတာကို ဂရုျပဳပါ။

3)
echo echo "You got 3rd prize" ;; ဒါကေတာ့ ထည့္လိုက္တဲ့ input သည္ 3 ဆိုရင္ You got 3rd
prize ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးတာပါ။ အဆံုးမွာ ;; ႏွစ္ခုပါတာကို ဂရုျပဳပါ။

*)
echo "Sorry, try for the next time" ;; 'ဒါကေတာ့ အဆံုးသတ္ပါ။ ထည့္လိုက္တဲ့ input သည္
1/2/3 မဟုတ္ပဲ အျခားဟာေတြ ျဖစ္ေနရင္ Sorry, try for the next time ဆိုတဲ့ စာသားေလးကို ေ
ဖၚျပေပးမွာပါ။ အဆံုးမွာ ;; ႏွစ္ခုပါတာကို ဂရုျပဳပါ။

esac သည္ case ကို ေျပာင္းျပန္ေရးထားတာပါ။ case statement ကို ျပန္ပိတ္ေပးတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 11case.sh

ဒီ 11case.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 11case.sh

သို ့မဟုတ္

./11case.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ case statement ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(30-4-2019)

++ [ while loop ] script-12 ++

ခုတခါ သြားမွာကေတာ့ while loop အေၾကာင္းပါ။ while အေၾကာင္း မေျပာခင္ loop အေၾကာင္း အ
ရင္ ေျပာရေအာင္။ loop ဆိုတာ သံသရာလည္တယ္၊ စက္ဝန္းပတ္တယ္၊ အဖန္ဖန္လုပ္တယ္၊ ေပါ့ေ
နာ္။ ဘယ္အထိ သံသရာလည္သလဲ ဆိုေတာ့ လိုလားခ်က္နဲ ့ မညီမခ်င္း command တစ္ခုကို အႀကိ
မ္ႀကိမ္ အဖန္ဖန္ run ၿပီး သံသရာလည္တာပါ။

while ဆိုတာကေတာ့ ရွိေနစဥ္၊ ျဖစ္ေနစဥ္လို ့ အဓိပၸါယ္ရပါတယ္။ ဥပမာ၊ ေမာင္ေမာင္သည္ ဗိုက္


ဆာေနစဥ္၊ အဲ့လိုေပါ့။ while ကို loop နဲ ့ တြဲလိုက္တဲ့အခါ ေမာင္ေမာင္သည္ ဗိုက္ဆာေနစဥ္ ထမင္း
ကို တလုတ္ၿပီးတလုတ္ အဖန္ဖန္စားပါ။ ဗိုက္ျပည့္မွ ရပ္ပါ။ ဒီလို သေဘာတရားပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ မိမိလိုလားခ်က္နဲ ့ ညီတဲ့ အထိ command တစ္ခုကို loop အျ


ဖစ္ ဖန္တီးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 12while_loop.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash
i=0

while [ $i -le 3 ]
do

echo "Welcome $i times"


(( i++ ))

done

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

i=0 ကေတာ့ i အမည္ရ variable ရဲ့ မူလတန္ဖိုးသည္ 0 လို ့ ေၾကျငာထားတာပါ။

while [ $i -le 3 ]
do ဆိုတာကေတာ့ $i ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးသည္ 3 ထက္ ငယ္ေနစဥ္မွာ do ေအာက္ပါ
command ကို run ပါဆိၿု ပီး while loop ကို စဖြင့္လိုက္တာပါ။ [ $i -le 3 ] ကို condition အေျခအေ
န လို ့ ေခၚပါတယ္။

echo "Welcome $i times" ဒါကေတာ့ $i ရဲ့ ေျပာင္းလဲသြားတဲ့ တန္ဖိုးေတြကို update ေဖၚျပေပးဖို ့


command ပါ။ $i သည္ 3 ထက္ ငယ္ေနသေရြ ့၊ 3 နဲ ့ မညီမခ်င္း အႀကိမ္ႀကိမ္ run ေနမွာပါ။ loop ပ
တ္ေနမွာပါ။

(( i++ )) ဒါကေတာ့ loop တစ္ႀကိမ္ပတ္ၿပီးတိုင္း၊ echo command ကို တစ္ခါ run ၿပီးတိုင္း၊ i ရဲ့ တန္
ဖိုးမွာ 1 တိုးေပးသြားဖို ့ပါ။

done ဒါကေတာ့ while loop ကို ၿပီးဆံုးေၾကာင္း ျပန္ပိတ္ေပးလိုက္တာပါ။ i ကို 1 တိုးရင္း 3 နဲ ့ ညီတဲ့
အခါ ၿပီးဆံုးမွာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 12while_loop.sh

ဒီ 12while_loop.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 12while_loop.sh

သို ့မဟုတ္

./12while_loop.sh
run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ while loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(1-5-2019)

++ [ infinite loop by while ] script-13 ++

ခုတခါ infinite loop အေၾကာင္း ေလ့လာၾကရေအာင္။ infinite အဆံုးမဲ့တဲ့ loop ေပါ့။ endless loop
လို ့လည္း ေခၚပါတယ္။ keyboard ေပၚက ctrl+c ကို မႏွိပ္မခ်င္း run ေနမွာပါ။ while ကို အသံုးျပဳၿပီး
infinite loop ေတြ ဖန္တီးရတာ အရမ္း ရိုးရွင္းပါတယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ infinite loop ေတြကို လိုအပ္တဲ့အခါ ဖန္တီးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 13while_infinite_loop.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေ


ရးသြင္းပါ။

#!/bin/bash
i=0
while true
do

echo "I Love You Endlessly $i"

(( i++ ))

done

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

i=0 ကေတာ့ i ဆိုတဲ့ variable သည္ 0 ကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။

while true
do သည္ endless loop ကို စဖြင့္လိုက္တာပါ။

echo "I Love You Endlessly $i" ကေတာ့ I Love You Endlessly ဆိုတဲ့ စာသားကို အဖန္ဖန္ မ
ဆံုးႏိုင္ေအာင္ ေဖၚျပေနမွာပါ။ မိမိ computer ရဲ့ Performance ေပၚမူတည္ၿပီး စကၠန္ ့ပိုင္းမွာတင္
loop သိန္းခ်ီ ပတ္သြားပါလိမ့္မယ္။ ဒီေနရာမွာ $i ရဲ့ တန္ဖိုးေတြသည္ ေျပာင္းလဲေနမွာပါ။ ဘာေၾကာင့္
လဲ? ေအာက္မွာ ဆက္ဖတ္ပါ။

(( i++ )) ကေတာ့ echo command တေၾကာင္း run ၿပီးတိုင္း i ရဲ့ တန္ဖိုးကို 1 ထပ္ထပ္ တိုးေပး
သြားတာပါ။

done ဒါကေတာ့ ရွင္းပါတယ္။ while loop ကို ပိတ္ေပးလိုက္တာပါ။ ၿပီးဆံုးေၾကာင္း ေၾကျငာတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 13while_infinite_loop.sh

ဒီ 13while_infinite_loop.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 13while_infinite_loop.sh
သို ့မဟုတ္

./13while_infinite_loop.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

*** run ေနတာကို ရပ္တန္ ့လိုရင္ keyboard ေပၚက ctrl + c ကို တြဲႏွိပ္ေပးပါ ***

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ infinite loop ေခၚ endless loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(1-5-2019)

++ [ breaking the while infinite loop with if ] script-14 ++


ခုတခါ while နဲ ့ ဖန္တီးထားတဲ့ infinite loop ထဲကေန if condition statement သံုးၿပီး ထြက္တဲ့
အေၾကာင္းဆီ သြားၾကရေအာင္။

သူက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ ထည့္လိုက္တဲ့ input သည္ if statement မွာ ေဖၚျပထား


တဲ့ တန္ဖိုးနဲ ့ မတူမခ်င္း loop သည္ တစ္ႀကိမ္ၿပီးတစ္ႀကိမ္ အဆံုးမဲ့ ပတ္ေနမွာပါ။ အဲ ! input သည္ if
statement မွာ ေဖၚျပထားတဲ့ တန္ဖိုးနဲ ့ တူသြားရင္ေတာ့ ရပ္သြားမွာပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ infinite loop ထဲကေန if statement သံုးၿပီး ထြက္တတ္ဖို


့ပါ။

ကဲ ! စရေအာင္။

vi 14while_break.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း


ပါ။

#!/bin/bash

while true
do
read -p "Enter your name (press q to quit) : " firstname lastname
if [ $firstname == q ]
then
break
fi

name="$firstname $lastname"

echo "Hello $name, have a nice day"

done

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

while true
do သည္ infinite loop ကို စဖြင့္လိုက္တာပါ။
read -p "Enter your name (press q to quit) : " firstname lastname ဆိုတာကေတာ့ read
သည္ input ကြက္လပ္ကို ဖန္တီးၿပီး၊ ထည့္လိုက္တဲ့ input ေတြကို firstname နဲ ့ lastname အမည္
ရ variable ႏွစ္ခုျဖစ္ ဖမ္းယူလိုက္တာပါ။

if [ $firstname == q ]
then
break
fi
ဒါကေတာ့ loop ကို if သံုးၿပီး break လုပ္တဲ့ အပိုင္းပါ။ ထည့္လိုက္တဲ့ input သည္ q တစ္လံုးတည္း
ဆိုရင္ loop ကို ရပ္တန္ ့ခိုင္းလိုက္တာပါ။

name="$firstname $lastname" ဒါကေတာ့ string စာသားေတြကို ေပါင္းစပ္ combine လုပ္တာ


ပါ။ input မွာ ထည့္လိုက္တဲ့၊ firstname နဲ ့ lastname အမည္ရ variable ေတြက ကိုယ္စားျပဳထား
တဲ့၊ စာသားေတြကို name အမည္ရ variable တစ္ခုတည္းနဲ ့ ထပ္မံ ကိုယ္စားျပဳေၾကာင္း ေၾကျငာလို
က္တာပါ။

echo "Hello $name, have a nice day" ဒါကေတာ့ ရွင္းပါတယ္။ Hello $name, have a nice day
ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။ $name ေနရာမွာ သူကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို ျပသေပးပါလိမ့္မ
ယ္။

done ဒါကေတာ့ ရွင္းပါတယ္။ while loop ကို ပိတ္ေပးလိုက္တာပါ။ ၿပီးဆံုးေၾကာင္း ေၾကျငာတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 14while_break.sh

ဒီ 14while_break.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 14while_break.sh

သို ့မဟုတ္

./14while_break.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

*** run ေနတာကို ရပ္တန္ ့လိုရင္ input မွာ q လို ့ ထည့္ေပးလိုက္ပါ ***
source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ while နဲ ့ ေရးထားတဲ့၊ infinite loop ကို break လုပ္တဲ့အေၾကာင္း shell script ေလးကို
ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(1-5-2019)

++ [ for loop ] script-15 ++

ခုတခါ သြားမွာကေတာ့ for loop အေၾကာင္းပါ။ for အေၾကာင္း မေျပာခင္ loop အေၾကာင္း အရင္ ေျ
ပာရေအာင္။ loop ဆိုတာ သံသရာလည္တယ္၊ စက္ဝန္းပတ္တယ္၊ အဖန္ဖန္လုပ္တယ္၊ ေပါ့ေနာ္။ ဘ
ယ္အထိ သံသရာလည္သလဲ ဆိုေတာ့ လိုလားခ်က္နဲ ့ မညီမခ်င္း command တစ္ခုကို အႀကိမ္ႀကိမ္
အဖန္ဖန္ run ၿပီး သံသရာလည္တာပါ။

for loop နဲ ့ while loop နဲ ့ ဘာကြာလဲဆိုေတာ့ syntax အထားအသိုေလးေတြ ကြာပါတယ္။ ၿပီးေ


တာ့ while loop သည္ will not run n times ပါတဲ့။ ခဏေနမွ while နဲ ့ for ဘာေတြကြာလဲ သီးသ
န္ ့ topic တစ္ခုနဲ ့ ရွင္းေပးပါ့မယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ မိမိလိုလားခ်က္နဲ ့ ညီတဲ့ အထိ command တစ္ခုကို loop အျ


ဖစ္ ဖန္တီးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 15for_loop.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။


#!/bin/bash

for (( counter=10; counter>0; counter-- ))


do

echo -n "$counter "

done

printf "\n"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

for (( counter=10; counter>0; counter-- ))


do ဆိုတာကေတာ့ for loop ကို စဖြင့္လိုက္တာပါ။ (( ..... )) အထဲက ေဖၚျပခ်က္က အသက္ပါ။
counter ဆိုတဲ့ variable ကိုယ္စားျပဳတဲ့ တန္ဖိုးသည္ 10 ျဖစ္တယ္။ counter သည္ 0 ထက္ႀကီးေန
သေရြ ့ loop ပတ္ပါ။ loop တပတ္ျပည့္တိုင္း counter ရဲ့ တန္ဖိုးထဲက 1 ေလွ်ာ့သြားပါ။ ဒီလို အဓိပၸါယ္
ရပါတယ္။

(( counter=10; counter>0; counter-- )) ကို expression လို ့ ေခၚပါတယ္။ counter=10 ကို


initializer စမွတ္လို ့ ေခၚပါတယ္။ counter>0 ကို condition အေျခအေန သို ့မဟုတ္ ဆံုးမွတ္လို ့ ေ
ခၚပါတယ္။ counter-- ကို decrement ေလွ်ာ့ခ်ျခင္းလို ့ ေခၚပါတယ္။ counter++ ျဖစ္ခဲ့ရင္
increment တိုးျခင္းလို ့ ေခၚရမွာပါ။ do ကေတာ့ ေအာက္ပါ command ကို run ပါလို ့ အဓိပၸါယ္ ရပါ
တယ္။

echo -n "$counter " ကေတာ့ loop တစ္ႀကိမ္ပတ္တိုင္း $counter ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးေတြ


ကို output ရလဒ္အျဖစ္ ေဖၚျပေပးဖို ့ပါ။ -n ဆိုတဲ့ option က ေဖၚျပခ်က္ေတြကို တစ္ေၾကာင္းခ်င္း မ
ဟုတ္ပဲ တစ္ဆက္တည္း ေဖၚျပဖို ့ သံုးထားတာပါ။

done ဒါကေတာ့ for loop ကို ၿပီးဆံုးေၾကာင္း ျပန္ပိတ္ေပးလိုက္တာပါ။ counter ကို 1 ႏွဳတ္ရင္းရင္း 1
နဲ ့ ညီတဲ့အခါ ၿပီးဆံုးမွာပါ။

printf "/n" မွာ printf သည္ echo လိုပဲ စာသားေတြကို ေဖၚျပေပးတဲ့ command ပါ။ loop ရဲ့ ေနာက္
ဆံုး output ရလဒ္ ေဖၚျပအၿပီးမွာ /n ကို သံုးၿပီး ေအာက္တစ္ေၾကာင္း ဆင္းခိုင္းလိုက္တာပါ။ /n သည္
new line လို ့ အဓိပၸါယ္ ရပါတယ္။ ဘာထူးျခားလဲ သိလိုရင္ printf "/n" ကို ဖိက္ၿပီး script ကို run ၾ
ကည့္ပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 15for_loop.sh

ဒီ 15for_loop.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 115for_loop.sh

သို ့မဟုတ္

./15for_loop.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ fpr loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(2-5-2019)

++ [ infinite loop by for ] script-16 ++


ခုတခါ infinite loop အေၾကာင္း ေလ့လာၾကရေအာင္။ infinite အဆံုးမဲ့တဲ့ loop ေပါ့။ endless loop
လို ့လည္း ေခၚပါတယ္။ keyboard ေပၚက ctrl+c ကို မႏွိပ္မခ်င္း run ေနမွာပါ။ for ကို အသံုးျပဳၿပီး
infinite loop ေတြ ဖန္တီးရတာ အရမ္း ရိုးရွင္းပါတယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ infinite loop ေတြကို လိုအပ္တဲ့အခါ ဖန္တီးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 16for_infinite_loop.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရး


သြင္းပါ။

#!/bin/bash
i=0

for (( ; ; ))
do

echo "infinite loops $i [ hit CTRL+C to stop]"

(( i++ ))

done

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

i=0 ဆိုတာကေတာ့ i အမည္ရ variable သည္ 0 ဆိုတဲ့ တန္ဖိုးကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာ


ပါ။ i သည္ infinite loop နဲ ့ တိုက္ရိုက္ သက္ဆိုင္ျခင္းေတာ့ မရွိပါဘူး။ ပတ္ေနတဲ့ loop ရဲ့ အေရအတြ
က္ သိဖို ့ ထည့္ထားျခင္းသာ ျဖစ္ပါတယ္။

for (( ; ; ))
do ဒါကေတာ့ infinite loop ကို စဖြင့္လိုက္တာပါ။ (( ; ; )) က အသက္ပါ။ do ကေတာ့ ေအာက္က
command ကို run ပါလို ့ အဓိပၸါယ္ရပါတယ္။

echo "infinite loops $i [ hit CTRL+C to stop]" ဒါကေတာ့ infinite loops $i [ hit CTRL+C to
stop] ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။ $i သည္ ပတ္ေနတဲ့ loop အႀကိမ္ေရကို ကိုယ္စားျပဳ ျပသေ
ပးပါလိမ့္မယ္။ loop ကို ရပ္ခ်င္ရင္ keyboard ေပၚက ctrl+c ကို တြဲႏွိပ္ေပးပါ။

(( i++ )) ဒါကေတာ့ loop တပတ္ ပတ္ၿပီးတိုင္း i ရဲ့ တန္ဖိုးမွာ 1 တိုးေပးဖို ့ပါ။ ဒါမွ ေျပာင္းေနတဲ့ i ရဲ့
တန္ဖိုးကို ၾကည့္ၿပီး loop ဘယ္ႏွစ္ပတ္လဲ သိရမယ္ေလ။

done ဒါကေတာ့ ရွင္းပါတယ္။ for loop ကို ပိတ္ေပးလိုက္တာပါ။ ၿပီးဆံုးေၾကာင္း ေၾကျငာတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 16for_infinite_loop.sh

ဒီ 16for_infinite_loop.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 16for_infinite_loop.sh

သို ့မဟုတ္

./16for_infinite_loop.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

*** run ေနတာကို ရပ္တန္ ့လိုရင္ keyboard ေပၚက ctrl + c ကို တြဲႏွိပ္ေပးပါ ***

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ for နဲ ့ ဖန္တီးထားတဲ့၊ infinite loop ေခၚ endless loop အေၾကာင္း shell script ေလး
ကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(1-5-2019)
++ [ breaking the for infinite loop with if ] script-17 ++

ခုတခါ for နဲ ့ ဖန္တီးထားတဲ့ infinite loop ထဲကေန if condition statement သံုးၿပီး ထြက္တဲ့ အေၾ
ကာင္းဆီ သြားၾကရေအာင္။

သူက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ ထည့္လိုက္တဲ့ input သည္ if statement မွာ ေဖၚျပထား


တဲ့ တန္ဖိုးနဲ ့ မတူမခ်င္း loop သည္ တစ္ႀကိမ္ၿပီးတစ္ႀကိမ္ အဆံုးမဲ့ ပတ္ေနမွာပါ။ အဲ ! input သည္ if
statement မွာ ေဖၚျပထားတဲ့ တန္ဖိုးနဲ ့ တူသြားရင္ေတာ့ ရပ္သြားမွာပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ infinite loop ထဲကေန if statement သံုးၿပီး ထြက္တတ္ဖို


့ပါ။

ကဲ ! စရေအာင္။

vi 17for_break.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

for (( ; ; ))
do
read -p "Enter your name (press q to quit) : " firstname lastname
if [ $firstname == q ]
then
break
fi

name="$firstname $lastname"

echo "Hello $name, have a nice day"

done

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

for (( ; ; ))
do သည္ infinite loop ကို စဖြင့္လိုက္တာပါ။

read -p "Enter your name (press q to quit) : " firstname lastname ဆိုတာကေတာ့ read
သည္ input ကြက္လပ္ကို ဖန္တီးၿပီး၊ ထည့္လိုက္တဲ့ input ေတြကို firstname နဲ ့ lastname အမည္
ရ variable ႏွစ္ခုျဖစ္ ဖမ္းယူလိုက္တာပါ။

if [ $firstname == q ]
then
break
fi
ဒါကေတာ့ loop ကို if သံုးၿပီး break လုပ္တဲ့ အပိုင္းပါ။ ထည့္လိုက္တဲ့ input သည္ q တစ္လံုးတည္း
ဆိုရင္ loop ကို ရပ္တန္ ့ခိုင္းလိုက္တာပါ။

name="$firstname $lastname" ဒါကေတာ့ string စာသားေတြကို ေပါင္းစပ္ combine လုပ္တာ


ပါ။ input မွာ ထည့္လိုက္တဲ့၊ firstname နဲ ့ lastname အမည္ရ variable ေတြက ကိုယ္စားျပဳထား
တဲ့၊ စာသားေတြကို name အမည္ရ variable တစ္ခုတည္းနဲ ့ ထပ္မံ ကိုယ္စားျပဳေၾကာင္း ေၾကျငာလို
က္တာပါ။

echo "Hello $name, have a nice day" ဒါကေတာ့ ရွင္းပါတယ္။ Hello $name, have a nice day
ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။ $name ေနရာမွာ သူကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို ျပသေပးပါလိမ့္မ
ယ္။

done ဒါကေတာ့ ရွင္းပါတယ္။ for loop ကို ပိတ္ေပးလိုက္တာပါ။ ၿပီးဆံုးေၾကာင္း ေၾကျငာတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 17for_break.sh

ဒီ 17for_break.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 17for_break.sh

သို ့မဟုတ္

./17for_break.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

*** run ေနတာကို ရပ္တန္ ့လိုရင္ input မွာ q လို ့ ထည့္ေပးလိုက္ပါ ***

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ for နဲ ့ ေရးထားတဲ့၊ infinite loop ကို break လုပ္တဲ့အေၾကာင္း shell script ေလးကို ဒီ
မွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(3-5-2019)
++ [ simple loop by for ] script-18 and 19 ++

ခုတခါ for ကို သံုးၿပီး simple loop ေတြ ေရးၾကည္ရေ


့ အာင္။ သိပ္ကို ရိုးရွင္းပါတယ္။

အထူးအေထြ မရွင္းျပေတာ့ပါဘူး။

ေအာက္ပါ script ေလးကို 18for_simple_loop1.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ သူဘယ္


လို အလုပ္လုပ္သလဲ နားလည္သြားမွာပါ။

#!/bin/bash

for i in 1 2 3 4 5

do

echo "I love you $i"

done

နဲနဲ ရွင္းရရင္ --> for i in 1 2 3 4 5 ကေတာ့ i ရဲ့ တန္ဖိုးကို 1 ကေန 5 အထိ တစ္ဆင့္ျခင္း တိုးသြား
ဖို ့ပါ။ loop ငါးႀကိမ္ ပတ္မယ္ေပါ့။ ဒီသေဘာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ကဲ ! 1 ကေန 5 အထိ loop ပတ္တာကေတာ့ ဟုတ္ၿပီ။ 1 ကေန 1500 ထိ ပတ္မယ္ဆို ခ်ေရးေနရမွာ


အမ်ားႀကီး ျဖစ္သြားမွာေပါ့။ ဒီအတြက္ စိတ္မပ်က္ပါနဲ ့။ အတိုေကာက္ နည္းလမ္း ရွိပါတယ္။

ေအာက္ပါ script ေလးကို 19for_simple_loop2.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ သူဘယ္


လို အလုပ္လုပ္သလဲ နားလည္သြားမွာပါ။
#!/bin/bash

for i in {1..1500}

do

echo "I lovae you $i"

done

နဲနဲ ရွင္းရရင္ --> for i in {1..1500} ကေတာ့ i ရဲ့ တန္ဖိုးကို 1 ကေန 1500 အထိ တစ္ဆင့္ျခင္း တိုး
သြားဖို ့ အတိုေကာက္ေရးထားတာပါ။ loop အႀကိမ္ 1500 ပတ္မယ္ေပါ့။ ဒီသေဘာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(3-5-2019)
++ [ while loop Vs for loop ] ++

loop ေတြ အေၾကာင္း တင္ဆက္ၿပီးၿပီဆိုေတာ့၊ while နဲ ့ loop ပတ္တာ၊ for နဲ ့ loop ပတ္တာ၊ ဒီ ၂
ခု ဘာေတြ ကြာလဲ ေလ့လာၾကည္ရေ
့ အာင္။

#while
၁။ while သည္ သူ ့ေနာက္က condition ေပၚ အေျခခံၿပီး အဲဒီ condition မွန္ေနရင္ loop ပတ္ပါတ
ယ္။
ဥပမာ၊ while [ $counter -le 10 ]

၂။ while ရဲ့ ေနာက္က condition သည္ အၿမဲ မွန္ေနရင္ infinite loop ျဖစ္သြားတတ္ပါတယ္။
ဥပမာ၊ while true

၃။ ၿပီးရင္ counter ကို 1 ထပ္တိုးျခင္း/ေလ်ာ့ျခင္း ျပဳလုပ္ပါတယ္။

၄။ ၿပီးမွ command ကို run ပါတယ္။

၅။ loop ပတ္ရင္း condition အမွန္ကေန ေသြဖယ္သြားတဲ့ အႀကိမ္ကို ေရာက္မွ loop ကေန ထြက္
သြားပါတယ္။

#for
၁။ for သည္ သူ ့ေနာက္က expression ေပၚ အေျခခံၿပီး loop ပတ္ပါတယ္။ အဲဒီ expression မွာ
၁။စမွတ္
၂။ဆံုးမွတ္
၃။တိုးျခင္း/ေလ်ာ့ျခင္း ရွိရပါတယ္။
ဥပမာ၊ (( counter=10; counter>0; counter-- )) မွာ counter=10 သည္ စမွတ္ initializer ပါ။
counter>0 သည္ ဆံုးမွတ္ end point ပါ။ counter-- သည္ ေလ်ာ့ျခင္း increment ပါ။

၂။ for ရဲ့ ေနာက္က expression မွာ ( ; ; ) လို ့ပဲ ထည့္လိုက္ရင္ infinite loop ျဖစ္သြားပါတယ္။

၃။ ၿပီးရင္ command ကို run ပါတယ္။

၄။ ၿပီးမွ counter ကို 1 ထပ္တိုးျခင္း/ေလ်ာ့ျခင္း ျပဳလုပ္ပါတယ္။

၅။ loop ပတ္ရင္း ဆံုးမွတ္ end point ကို ေရာက္မွ loop ကေန ထြက္သြားပါတယ္။

ခုေလာက္ဆို while နဲ ့ for တို ့ရဲ့ ကြဲျပားမွုေတြ၊ အလုပ္လုပ္ပံုေတြကို သိၿပီထင္ပါတယ္။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(3-5-2019)
++ [ commenting ] script-20 ++

shell script ထဲမွာ comment မွတ္ခ်က္ေလးေတြ ေရးတဲ့ အပိုင္းပါ။ အရမ္းလြယ္ေပမယ့္ မေျပာမျဖစ္


မို ့သာ topic တစ္ခုအျဖစ္ ဖြင့္ရတာပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က မိမိဖာသာ ျပန္မွတ္မိဖို ့ comment မွတ္ခ်က္ေလးေတြ ေရးႏိုင္ဖို ့ပါ။

single line comment နဲ ့ multi-line comment ဆိုၿပီး ၂ မ်ိဳး ရွိပါတယ္။

# နဲ ့ စဖြင့္ရင္ single line comment ပါ။

:'
bla
bla
bla
'
သည္ multi-line coment ပါ။ : ' နဲ ့ စဖြင့္ပါတယ္။ : နဲ ့ ' ၾကားမွာ space တစ္ခု ျခားေပးရပါတယ္။
comment ေတြ တစ္ေၾကာင္းၿပီး တစ္ေၾကာင္း ေရးၿပီးရင္ ' နဲ ့ ျပန္ပိတ္ေပးရပါတယ္။

ေအာက္ပါ script ေလးကို 20comment.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ comment ေတြ
ဘယ္လို အလုပ္လုပ္သလဲ နားလည္သြားမွာပါ။

#!/bin/bash

#This is a comment

:'
comment 1
comment 2
comment 3
'

echo "You can not see the comments"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

shell script ေတြထဲမွာ comment ေရးတဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(3-5-2019)
++ [ getting arguments from command line ] script-21 ++

argument ဆိုတာ ဘာလဲ? variable တစ္ခုက ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို argument လို ့ ေခၚ
တာပါ။ i=0 မွာ i သည္ variable ပါ။ 0 သည္ argument ပါ။

name="mg mg" မွာ name သည္ variable ပါ။ "mg mg" သည္ argument ပါ။

ဒါဆို ရွင္းၿပီ ထင္ပါတယ္။

ခုတခါ ေျပာမွာက shell script file ရဲ့ အဆံုးမွာ arguments ေတြကို တိုက္ရိုက္ input ေရးၿပီး script
ထဲကေန variable ေတြနဲ ့ ျပန္ကယ ို ္စားျပဳတဲ့ အေၾကာင္းပါ။။ ရွဳပ္သြားလား မသိဘူး။

ဥပမာ ေပးရရင္၊ bash example.sh Yin Thu <-- ဒါက script ကို run ရင္း file ရဲ့ အေနာက္မွာ
argument ေတြကို တိုက္ရိုက္ input ထည့္ေပးလိုက္တာပါ။ Yin သည္ argument 1 ပါ။ Thu သည္
argument 2 ပါ။ စုစုေပါင္း argument ႏွစ္ခုေပါ့။

argument တစ္ခုနဲ ့တစ္ခုၾကား space ေလး ျခားေပးပါ။

လက္ေတြ ့လုပ္ၾကည္ရေ
့ အာင္။

ေအာက္ပါ script ေလးကို 21get_arg_from_cli.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ နားလ


ည္သြားမွာပါ။

!/bin/bash

echo "your name is $1 $2"


echo "there are $# arguments"
ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

chmod a+x 21get_arg_from_cli.sh လို ့သတ္မွတ္ပါ။

bash 21get_arg_from_cli.sh Yin Thu ဆို ၿပီး run ၾကည့္ပါ။

ရွင္းရရင္ -->

ထည့္လိုက္တဲ့ Yin သည္ argument 1 ပါ။ script ထဲကေန $1 အမည္ရ variable အျဖစ္ လွမ္းကိုယ္
စားျပဳလိုက္ပါတယ္။

ထည့္လိုက္တဲ့ Thu သည္ argument 2 ပါ။ script ထဲကေန $2 အမည္ရ variable အျဖစ္ လွမ္းကိုယ္
စားျပဳလိုက္ပါတယ္။

Yin နဲ ့ Thu --> စုစုေပါင္း argument ႏွစ္ခုေပါ့။ ဒါကို $# နဲ ့ လွမ္းကိုယ္စားျပဳလိုက္ပါတယ္။ $#


သည္ ထည့္သမ်ွ argument ေတြရဲ့ အေရအတြက္ကို ကိုယ္စားျပဳေပးတာပါ။

result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

script file ရဲ့ ေနာက္ကေန argument ေတြကို တိုက္ရိုက္ထည့္တဲ့ သေဘာတရားကို ဒီမွ်နဲ ့ တစ္ခန္း
ရပ္ပါရေစ။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(4-5-2019)
++ [ input style ] script-22 ++

ခုတခါ သြားမွာက script တခုကို run တဲ့အခါ input ထည့္ခိုင္းရာမွာ မတူညီတဲ့ ပံုစံေလးေတြပါ။

တြဲတင္ထားတဲ့ photo ကို ၾကည့္လိုက္ရင္ ပိုရွင္းပါမယ္။

ပထမ ထည့္ရတဲ့ Yin ဆိုတဲ့ တန္ဖိုးသည္ Enter your first name ဆိုတဲ့ စသားရဲ့ ေအာက္မွာပါ။

ဒုတိယ ထည့္ရတဲ့ Thu ဆိုတဲ့ တန္ဖိုးသည္ Enter your last name ဆိုတဲ့ စာသားရဲ့ နံေဘးမွာပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ ဒီလို style မတူညီတာေတြကို ဘယ္လို ဖန္တီးရမလဲ သိဖို ့ပါ။

ေအာက္ပါ script ေလးကို 22input_style.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ comment ေတြ
ဘယ္လို အလုပ္လုပ္သလဲ နားလည္သြားမွာပါ။

#!/bin/bash

#first input style


echo "Enter your first name"
read name1

#second input style


read -p "Enter your last name :" name2

#output result
echo "Your name is $name1 $name2"

ၿပီးရင္ Esc :wq နဲ ့ ထြက္ပါ။

chmod a+x 22input_style.sh လို ့ သတ္မွတ္ပါ။

ရွင္းရရင္ -->

echo "Enter your first name"


read name1 ဒါကေတာ့ input ကို စာသားရဲ့ ေအာက္မွာ ထည့္ခိုင္းတာပါ။

read -p "Enter your last name :" name2 ဒါကေတာ့ input ကို စာသားေဘးမွာ ထည့္ခိုင္းတာပါ။
echo လံုးဝ မသံုးတာကို သတိျပဳပါ။ read ကို -p ဆိုတဲ့ option နဲ ့ တြဲသံုးသြားတာပါ။
bash 22input_style.sh လို ့ run ၾကည့္ပါ။

result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

shell script ေရးရာမွာ input ေတြရဲ့ style အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(4-5-2019)

<(") shell scripting နဲ ့ ပတ္သက္လို ့ ခု ေလ့လာေနရတဲ့ topics ေတြဟာ မသိမျဖစ္ သိရမယ့္


concept အေျခခံ အယူအဆ သေဘာတရားေတြပါ <(")

topics ေတြမွာ concept ကို အသားေပးၿပီး ရိုးရွင္းေအာင္ စီစဥ္ထားတာပါ။

ဒီ concept ေတြကို နားလည္မွသာ၊ real world လက္ေတြ ့ေလာကမွာ အသံုးျပဳဖို ့ script ေတြကို ေ
ရးသားႏိုင္မွာပါ။ online က ရလာတဲ့ script ေတြကို မိမိ လိုအပ္ခ်က္နဲ ့ ကိက
ု ္ေအာင္ ျပဳ ျပင္ႏိုင္မွာပါ။

Linux ေလာကမွာ shell script မေရး တတ္ရင္ ေရရွည္ အတြက္ အဆင္မေျပပါဘူး။ noob ေနမွာပါ။

shell script ကို ေလ့လာရာမွာ အဓိကက concept ကို အမိအရ ဆုပ္ကိုင္ပါ။

ေျပာရရင္ --> [ အရုပ္ဆက္ကစားသလို ေသးငယ္တဲ့ ကဒ္ေလးေတြ စနစ္တက် ေပါင္းစပ္လိုက္တဲ့


အခါ အႀကီးႀကီး ျဖစ္သြားသလို။ concept ေတြကို စနစ္တက် ေပါင္းစပ္လိုက္တဲ့အခါ စံခ်ိန္မီတဲ့ script
တစ္ခု ျဖစ္လာမွာပါ ]

ဒါ့ေၾကာင့္ --> [ ရိုးရွင္း လြယ္ကူတဲ့ အပိုင္းေလးေတြကို ေသခ်ာ သံုးသပ္ေလ့လာပါ။ မေပါ့ဆပါနဲ ့ ]

*** concept ေတြ ၿပီးသြားတဲ့အခါမွ real world မွာ သံုးတဲ့ script ေတြကို ဆက္ေလ့လာၾကတာေပါ့
***

ဒါပါပဲ။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(4-5-2019)

++ [ nested loop by for ] script-23 ++

nested loop ဆိုတာ ဘာလဲ? အျပင္မွာ outer loop တစ္ခု။ အတြင္းမွာ inner loop တစ္ခု။ အဲ့လို ငံု
ထားတဲ့ loop ႏွစ္ဆင့္ကို nested loop လို ့ ေခၚတာပါ။

သူက ဘယ္လို run သလဲ? inner loop မွာ အပတ္ေရ အျပည့္ run ၿပီးမွ outer loop သည္ တစ္ပတ္
သာ ျပည့္ပါတယ္။

ေပးထားတဲ့ example ေလးကို လက္ေတြ ့ လုပ္ၾကည့္လိုက္ရင္ ပိုရွင္းသြားမွာပါ။


ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ လိုအပ္လာတဲ့အခါ nested loop ေတြ ဖန္တီးတတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 23for_nested_loop.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရး


သြင္းပါ။

#!/bin/bash

#nesting for loops

for (( a = 1; a <= 2; a++ ))


do
echo “Starting outer loop $a:”

#inner loop start


for (( b = 1; b <= 3; b++ ))
do
echo “ Inner loop: $b”
done
#inner loop end

done

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

ရွင္းရရင္ -->

ဒီ script မွာ for loop ႏွစ္ခုကို ေတြ ့ရမွာပါ။ ၁ ခုက outer loop ျဖစ္ၿပီး ၁ ခုက inner loop ပါ။

for (( a = 1; a <= 2; a++ ))


do ဒါကေတာ့ outer loop ကို စဖြင့္လိုက္တာပါ။ (( a = 1; a <= 2; a++ )) ဆိုတဲ့ expression
အရ a ဆိုတဲ့ variable ရဲ့ တန္ဖိုးကို 2 နဲ ့ ညီတဲ့အထိ တိုးတိုးသြားမွာမို ့၊ outer loop သည္ ၂ ႀကိမ္ ပ
တ္မွာပါ။

echo “Starting outer loop $a:” ဒါကေတာ့ outer loop ၁ ပတ္ ပတ္ၿပီးတိုင္း အႀကိမ္ေရကို ေဖၚျပေ
ပးဖို ့ပါ။ ၁ ပတ္ျပည့္ရင္ $a သည္ 1 .. ၂ ပတ္ ျပည့္ရင္ $a သည္ 2 လို ့ ေျပာင္းလဲမွာပါ။
for (( b = 1; b <= 3; b++ ))
do ဒါကေတာ့ inner loop ကို စဖြင့္လိုက္တာပါ။ (( b = 1; b <= 3; b++ )) ဆိုတဲ့ expression
အရ b ဆိုတဲ့ variable ရဲ့ တန္ဖိုးကို 3 နဲ ့ ညီတဲ့အထိ တိုးတိုးသြားမွာမို ့၊ inner loop သည္ ၃ ႀကိမ္ ပ
တ္မွာပါ။

done ဒါကေတာ့ inner loop ကို အဆံုးသတ္ေပးတာပါ။

*** သတိျပဳရမွာက inner loop မွာ အပတ္ေရ ၃ ပတ္ အျပည့္ ပတ္ၿပီးမွ outer loop မွာ ၁ ပတ္ပဲ ရွိ
ဦးမွာပါ ***

done ဒါကေတာ့ outer loop ကို အဆံုးသတ္ေပးတာပါ။

script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။

chmod a+x 23for_nested_loop.sh

ဒီ 23for_nested_loop.sh ကို run ဖို ့ ေအာက္ပါ နည္းလမ္းေတြကို သံုးႏိုင္ပါတယ္။

bash 23for_nested_loop.sh

သို ့မဟုတ္

./23for_nested_loop.sh

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ for နဲ ့ ေရးထားတဲ့၊ nested loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(4-5-2019)
++ [ function ] script-24 and 25 ++

ခုတခါ သြားမွာကေတာ့ function အေၾကာင္းပါ။

function ဆိုတာဘာလဲ? function ဆိုေတာ့ အလုပ္လုပ္ေပးတဲ့ အရာေပါ့။ command ေတြကို ခ်က္


ခ်င္း မ run ခိုင္းပဲ၊ ကိယ
ု ္ run ခ်င္တဲ့ command ေတြကို function ထဲ ထည့္ေပးထားရတယ္။ လိုတဲ့
အခ်ိန္မွ အဲ့ဒီ function ကို ေခၚသံုးလိုက္တယ္။ ဒီသေဘာပါ။

သိထားရမွာက function ေတြသည္ အလိုေလ်ာက္ မ run ပါဘူး။ သူ ့ကို ေခၚသံုးလိုက္မွ run ေပးတာ
ပါ။

ဘာ့ေၾကာင့္ function ေတြကို သံုးသလဲ? အခ်ိန္ကုန္ သက္သာဖို ့၊ အလုပ္ျဖစ္ဖို ့၊ အျမင္ရွင္းဖို ့ပါ။


ဥပမာ၊ command တစ္ခုကို script ထဲမွာ ထပ္ခါခါ သံုးရမယ့္ အခါမ်ိဳးမွာ function အျဖစ္ ဖန္တီး
ထားလိုက္ၿပီး လိုတဲ့အခါမွာ အဲ့ဒီ function ကို ေခၚသံုးလိုက္မယ္ဆိုရင္၊ ပိုၿပီး သပ္ရပ္သြားပါလိမ့္မယ္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ function ေတြကို စနစ္တက် အသံုးျပဳတတ္ဖို ့ပါ။

ဒီေနရာမွာ function မသံုးထားတဲ့ script နဲ ့ function သံုးထားတဲ့ script ႏွစ္ခုကို ႏွိဳင္းယွဥ္ ျပသသြား
ပါ့မယ္။

ကဲ ! စရေအာင္။

#function မသံုးတဲ့ script


vi 24without_function.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရး
သြင္းပါ။

#!/bin/bash
for (( ; ; ))
do

read -p "Enter your name :" firstname lastname

echo "My name is $firstname $lastname"


echo "I am single"
echo "I like bash programming"

done

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 24without_function.sh လို ့ သတ္မွတ္ပါ။

bash 24without_function.sh နဲ ့ run ၾကည့္ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

run ေနတာကို ctrl+c တြဲႏွိပ္ၿပီး ထြက္ပါ။

ရွင္းရရင္ --> 24without_function.sh ထဲမွာ

echo "I am single"


echo "I like bash programming"

ဆိုတဲ့ string စာသား ၂ ေၾကာင္းက အၿမဲ ပါေနတာကို ေတြ ့ရမွာပါ။ ဒီ ၂ ေၾကာင္းကို function ထဲ ထ
ည့္လိုက္ရင္ code က ပိုသပ္ရပ္သြားမွာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

#function သံုးတဲ့ script


vi 25with_function.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း
ပါ။

#!/bin/bash
function F1 {

echo "I am single"


echo "I like bash programming"

for (( ; ; ))
do

read -p "Enter your name :" firstname lastname

echo "My name is $firstname $lastname"

F1

done

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 25with_function.sh လို ့ သတ္မွတ္ပါ။

bash 25with_function.sh နဲ ့ run ၾကည့္ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

run ေနတာကို ctrl+c တြဲႏွိပ္ၿပီး ထြက္ပါ။

ရွင္းရရင္ --> 25with_function.sh ထဲမွာ function ပါလာပါၿပီ။

function F1 ဆိုတာက function ကို စဖြင့္လိုက္တာပါ။ function ဆိုတဲ့ စကားလံုးက function ျဖ


စ္ေၾကာင္း ေၾကျငာတာပါ။ F1 က function အမည္ပါ။ function F1 လို ့ မေရးပဲ F1 () လို ့ ေရးလည္း
ရပါတယ္။ ၂ နည္းေပါ့။

echo "I am single"


echo "I like bash programming"
} ဒါကေတာ့ function ကို လွမ္းေခၚ သံုးလိုက္ရင္ run မယ့္ command ေတြပါ။ သူ ့ဖသာ မ run ပါ
ဘူး။ ေခၚသံုးမွသာ run မွာပါ။

for (( ; ; ))
do ဒါကေတာ့ infinite loop ကို စဖြင့္လိုက္တာပါ။

read -p "Enter your name :" firstname lastname ဒါကေတာ့ အမည္ input ႏွစ္ ထည့္ခိုင္းၿပီး ထ
ည့္လိုက္တဲ့ argument ေတြကို firstname နဲ ့ lastname အမည္ရ variable ႏွစ္ခုနဲ ့ ကိုယ္စားျပဳလို
က္တာပါ။

echo "My name is $firstname $lastname" ဒါကေတာ့ input မွာ yin thu လို ့ ထည့္လိုက္ရင္ My
name is yin thu ဆိုၿပီး ေဖၚျပေပးဖို ့ပါ။

F1 ဒါကေတာ့ အသက္ပါ။ F1 အမည္ရ function ကို လွမ္းေခၚလိုက္တာပါ။ အဲ့အခါ F1 သည္ အလုပ္


စတင္ၿပီး၊

I am single
I like bash programming

ဆိုတဲ့ စာသား ၂ ေၾကာင္းကို ေဖၚျပေပးပါလိမ့္မယ္။

done ဒါကေတာ့ loop ကို အဆံုးသတ္ေပးတာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

က်ေနာ္တို ့ရဲ့ function နဲ ့ သက္ဆိုင္တဲ့ အေၾကာင္း topic ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(6-5-2019)
++ [ make directory by checking existence ] script-26

ခုတခါ script နဲ ့ directory ေဆာက္တဲ့ အေၾကာင္းကို သြားၾကတာေပါ့။

ဒီ script ေလးက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ directory မေဆာက္ခင္ အမည္တူ directory


ရွိမရွိ အရင္ စစ္မယ္။ ရွိရင္ ရွိေၾကာင္း reply ျပန္မယ္။ မရွိရင္ ေဆာက္မယ္။ ေဆာက္ၿပီးေၾကာင္း reply
ျပန္မယ္။ ဒီလိုပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ shell script သံုးၿပီး directory ေဆာက္တတ္ဖို ့ပါ။

စလိုက္ရေအာင္ !
vi 26make_dir.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo "Enter directory name"

read dirname

if [ -d "$dirname" ]

then
echo "Directory exist"

else
`mkdir $dirname`

echo "Directory created successfully"

fi

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 26make_dir.sh လို ့ သတ္မွတ္ပါ။

bash 26make_dir.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "Enter directory name" ဒါကေတာ့Enter directory name ဆိုတဲ့ string စာသားကို ေဖၚျပ
တာပါ။
read dirname ဒါကေတာ့ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက
ို ္တဲ့ input ကို dirname အမည္ရ
variable နဲ ့ ကိုယ္စားျပဳလိုက္တာပါ။

if [ -d "$dirname" ] ဒါကေတာ့ အမည္တူ ရွိ/မရွိ စစ္တာပါ။ အမည္တူ ရွိလွ်င္လို ့ အဓိပၸါယ္ရပါတ


ယ္။ -d သည္ directory ကို ကိုယ္စားျပဳတာပါ။ directory test operator လို ့ ေခၚပါတယ္။

then
echo "Directory exist" ဒါကေတာ့ အမည္တုရွိလွ်င္ Directory exist ဆိုတဲ့ string စာသားနဲ ့ reply
ျပန္ဖို ့ပါ။

else
`mkdir $dirname` ဒါကေတာ့ အမည္တူ မရွိလွ်င္ directory ကို ဖန္တီးဖို ့ပါ။ ' … ' ကို သတိျပဳပါ။

echo "Directory created successfully" ဒါကေတာ့ directory ကို ဖန္တီးၿပီးတဲ့ေနာက္ Directory


created successfully ဆိုတဲ့ စာသားကို reply ျပန္ဖို ့ပါ။

fi ဒါကေတာ့ if statement ကို အဆံုးသတ္ေပးတာပါ။ if ရဲ့ ေျပာင္းျပန္ fi ပါ။

directory ေဆာက္ၿပီးသြားရင္ ေအာင္ျမင္လားဆိုတာ ls -ld ဆိုတဲ့ command နဲ ့ စစ္ၾကည့္ေပါ့ေနာ္။

ကဲ ! က်ေနာ္တို ့ရဲ့ directory ဖန္တီးတဲ့ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(6-5-2019)

++ [ make a file by checking existence ] script-27 ++

ခုတခါ script နဲ ့ file တစ္ခု ေဆာက္ၾကည္ရေ


့ အာင္။
ဒီ script ေလးက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ file မေဆာက္ခင္ အမည္တူ file ရွိမရွိ အရင္ စ
စ္မယ္။ ရွိရင္ ရွိေၾကာင္း reply ျပန္မယ္။ မရွိရင္ ေဆာက္မယ္။ ေဆာက္ၿပီးေၾကာင္း reply ျပန္မယ္။ ဒီ
လိုပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က လိုအပ္တဲ့အခါ file ေတြ တည္ေဆာက္တတ္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 27make_file.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo "Enter file name"

read fname

if [ -f "$fname" ]

then
echo "file exist"

else
`touch $fname`

echo "File created successfully"

fi

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 26make_file.sh လို ့ သတ္မွတ္ပါ။

bash 26make_file.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…
ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "Enter file name" ဒါကေတာ့Enter file name ဆိုတဲ့ string စာသားကို ေဖၚျပတာပါ။

read fname ဒါကေတာ့ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့ input ကို fname အမည္ရ
variable နဲ ့ ကိုယ္စားျပဳလိုက္တာပါ။

if [ -f "$fname" ] ဒါကေတာ့ အမည္တူ ရွိ/မရွိ စစ္တာပါ။ အမည္တူ ရွိလွ်င္လို ့ အဓိပၸါယ္ရပါတယ္။ -


f သည္ f ကို ကိုယ္စားျပဳတာပါ။ file test operator လို ့ ေခၚပါတယ္။

then
echo "File exist" ဒါကေတာ့ အမည္တုရွိလွ်င္ File exist ဆိုတဲ့ string စာသားနဲ ့ reply ျပန္ဖို ့ပါ။

else
`touch $fname` ဒါကေတာ့ အမည္တူ မရွိလွ်င္ file ကို ဖန္တီးဖို ့ပါ။ ' … ' ကို သတိျပဳပါ။

echo "File created successfully" ဒါကေတာ့ directory ကို ဖန္တီးၿပီးတဲ့ေနာက္ File created
successfully ဆိုတဲ့ စာသားကို reply ျပန္ဖို ့ပါ။

fi ဒါကေတာ့ if statement ကို အဆံုးသတ္ေပးတာပါ။ if ရဲ့ ေျပာင္းျပန္ fi ပါ။

file ေဆာက္ၿပီးသြားရင္ ေအာင္ျမင္လားဆိုတာ ls -l ဆိုတဲ့ command နဲ ့ စစ္ၾကည့္ေပါ့ေနာ္။

ကဲ ! က်ေနာ္တို ့ရဲ့ file ဖန္တီးတဲ့ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(6-5-2019)
++ [ read a file ] script-28 ++

ခုတခါ file ထဲမွာ ပါတဲ့ string စာသားေတြကို script နဲ ့ လွမ္းဖတ္ၾကည္ရေ


့ အာင္။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္က လိုအပ္လာတဲ့အခါ file ထဲက စာသားေတြကို script နဲ ့ လွမ္းၾကည့္


တတ္ဖို ့ပါ။ ဒီေတာ့ ေမးစရာ ရွိလာမယ္။ head, tail, cat, more, less ... စတဲ့ comand ေတြနဲ ့ေရာ
ဖတ္လို ့ မရဘူးလားေပါ့။ သူ ့လိုအပ္ခ်က္နဲ ့သူပါ လို ့။

ကဲ ! စရေအာင္။

vi readme ဆိုၿပီး text file ေလး ေဆာက္ၿပီး ေအာက္ပါအတိုင္း ႀကိဳတင္ ေရးသြင္းထားပါ။

01.Phone Thiri Kyaw


02.Khin Wint Wah
03.Ei Chaw Po

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

ဟုတ္ၿပီ အဲ့ဒီ readme file ကို ဖတ္ဖို ့ script ေရးရေအာင္။

vi 28read_file.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

read -p "Enter file name :" filename

file="$filename"

while read line


do
echo $line

done < $file

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 28read_filer.sh လို ့ သတ္မွတ္ပါ။

bash 28read_file.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

read -p "Enter file name :" filename ဒါကေတာ့ read သည္ input ကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့
file name ကို filename အမည္ရ variable နဲ ့ ကိုယ္စားျပဳလိုက္တာပါ။

file="$filename" ဒါကေတာ့ file ဆိုတဲ့ command နဲ ့ ထည့္လိုက္တဲ့ file name ကို လွမ္းေထာက္
ထားတာပါ။ file သည္ file အမ်ိဳးအစား ခြဲတဲ့ command ပါ။

while read line ဒါကေတာ့ file ထဲက line ေတြကို while နဲ ့ loop ပတ္ၿပီး ဖတ္ဖို ့ စဖြင့္လိုက္တာပါ။

do
echo $line ဒ္ကေတာ့ file ထဲက စာေၾကာင္းေတြကို line by line ျပသဖပးဖို ့ပါ။ loop တစ္ပတ္ျပည့္
တိုင္း ၁ ေၾကာင္း ့ပသေပးမွာပါ။

done < $file ဒါကေတာ့ loop တစ္ပတ္ျပည့္တိုင္း file ကို ျပန္ေခၚတာပါ။ အစဦးမွာ ေရးထားတဲ့
file="$filename" ဆိုတာေလးကို ျပန္ေခၚတာပါ။

အဲ့ေတာ့ file ထဲက content ေတြကို လွမ္းဖတ္တဲ့ shell script ေလးကို ဒီမွ်နဲ ့ တစ္ခန္းရပ္ပါရေစ။

အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(6-5-2019)

++ [ append to file ] ++

ခုတခါ script နဲ ့ file ထဲကို စာလွမ္းေရးၾကည္ရေ


့ အာင္။ append ဆိုတာ ေရးသြင္းတာကို ေျပာတာ
ပါ။

ရည္ရြယ္ခ်က္ကေတာ့ လိုအပ္တဲ့အခါ သံုးတတ္ဖို ့ေပါ့ေနာ္။

ကဲ ! စရေအာင္။

vi 29append_file.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္း


ပါ။

#!/bin/bash

echo "Before appending the file"

cat readme

echo "04.Ma Aye Thaung" >> readme

echo "After appending the file"

cat readme

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 29append_filer.sh လို ့ သတ္မွတ္ပါ။


bash 29append_file.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။ before နဲ ့ after အေျခအေနေ
တြကို ျမင္ရပါမယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

echo "Before appending the file" ဒါကေတာ့ Before appending the file ဆိုတဲ့ စာသားကို ေဖၚျ
ပဖို ့ပါ။

cat readme ဒါကေတာ့ script-28 မွာ သံုးထားဘူးတဲ့ readme အမည္ရ file ေလးရဲ့ before state
ကို ျပသေပးမွာပါ။

echo "04.Ma Aye Thaung" >> readme ဒါကေတာ့ အသက္ပါ။ readme အမည္ရ file ေလးထဲ
ကို 04.Ma Aye Thaung ဆိုတဲ့ စာသားကို ထည့္သြင္းေရးသားလိုက္တာပါ။ >> ပါတာကို သတိျပဳပါ။
> တစ္ခုပဲ ထားလိုက္ရင္ file ထဲက ယခင္ စာသားေတြကို အကုန္ဖ်က္ၿပီး စာသားအသစ္နဲ ့ အစားထိုး
သြားပါလိမ့္မယ္ေနာ္။

echo "After appending the file" ဒါကေတာ့ After appending the file ဆိုတဲ့ စာသားကို ေဖၚျပဖို
့ပါ။ 04.Ma Aye Thaung ဆိုတဲ့ စာသားေလး ေရာက္ေနတာကို ျမင္ရပါလိမ့္မယ္။

cat readme ဒါကေတာ့ script-28 မွာ သံုးထားဘူးတဲ့ readme အမည္ရ file ေလးရဲ့ After state ကို
ျပသေပးမွာပါ။

ဒီေလာက္ဆို script သံုးၿပီး file ထဲကို စာသားေတြ ထည့္သြင္းတတ္မယ္ ထင္ပါတယ္ေနာ္။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(6-5-2019)
++ [ font style ] script-30 ++

ခုတခါ font style ေတြအေၾကာင္း ေျပာရေအာင္။ ရိုးရိုးလား။ စာလံုးအထူလား။ တေစာင္းလား။


underline နဲ ့လား။ မွိတ္တုတ္ မွိတတ
္ ုတ္ blink လား။ ေနာက္ခံ background နဲ ့လား။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ စာသားေတြကို highlight လုပ္ခ်င္တဲ့အခါ သံုးႏိုင္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 30font_style.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

string="Catch Me If You can"

#0 is NORMAL
echo -e "\e[0m$string\e[0m"

#1 is BOLD
echo -e "\e[1m$string\e[0m"

#2 is FADED
echo -e "\e[2m$string\e[0m"

#3 is ITALIC
echo -e "\e[3m$string\e[0m"
#4 is UNDERLINE
echo -e "\e[4m$string\e[0m"

#5 is BLINK
echo -e "\e[5m$string\e[0m"

#6 is BLINK
echo -e "\e[6m$string\e[0m"

#7 is BACKGROUND
echo -e "\e[7m$string\e[0m"

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 30font_style.sh လို ့ သတ္မွတ္ပါ။

bash 30font_style.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

လြယ္လြယ္ေလးမို ့ ရွည္ရွည္ေဝးေဝး ရွင္းမေနေတာ့ပါဘူး။

script ထဲက # နဲ ့ စထားတဲ့ comment ေတြကို ၾကည့္ရံုနဲ ့ ဘယ္ number က ဘာအေရာင္ဆိုတာ


နားလည္ၾကမွာပါ။

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

string="Catch Me If You can" ဒါကေတာ့ string အမည္ရ variable သည္ Catch Me If You
Can ဆိုတဲ့ စာသားကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။

#1 is BOLD
echo -e "\e[1m$string\e[0m" ဒါက bold စာလံုးအထူအေနနဲ ့ စာသားကို ေဖၚျပေပးမွာပါ။ အေရာ
င္ကို ကိုယ္စားျပဳတဲ့ number ကို \e[ နဲ ့ m ၾကားမွာ ထည့္ေပးျခင္းျဖင့္ အစျပဳရပါတယ္။ \e[0m နဲ ့ ျပ
န္ပိတ္ေပးရပါတယ္။

က်န္တဲ့ font style ေတြသည္လည္း အလားတူပါပဲေနာ္။

အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ font style အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(7-5-2019)

++ [ font color ] script-31 ++

ခုတခါ သြားမွာကေတာ့ font color အေၾကာင္းပါ။ စာသားေတြကို၊ နီမလား။ စိမ္းမလား။ ျပာမလား။


background ကိုေရာ ဘာေရာင္ထည့္မလဲ စသည္ျဖင့္ေပါ့ေနာ္။

script-30 မွာ font style ေတြ ေျပာင္းခဲ့တဲ့ syntax အထားအသို အတိုင္းပါပဲ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ စာသားေတြကို highlight လုပ္ခ်င္တဲ့အခါ သံုးႏိုင္ဖို ့ပါ။

ကဲ ! စရေအာင္။

vi 30font_color.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash
string="Catch Me If You Can"

#31 is RED
echo -e "\e[31m$string\e[0m"

#41 is RED BACKGROUND


echo -e "\e[41m$string\e[0m"

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 30font_color.sh လို ့ သတ္မွတ္ပါ။

bash 30font_color.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

လြယ္လြယ္ေလးမို ့ ရွည္ရွည္ေဝးေဝး ရွင္းမေနေတာ့ပါဘူး။

script ထဲက # နဲ ့ စထားတဲ့ comment ေတြကို ၾကည့္ရံုနဲ ့ ဘယ္ number က ဘာအေရာင္ဆိုတာ


နားလည္ၾကမွာပါ။

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

string="Catch Me If You can" ဒါကေတာ့ string အမည္ရ variable သည္ Catch Me If You
Can ဆိုတဲ့ စာသားကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။

#31 is RED
echo -e "\e[31m$string\e[0m" ဒါက စာသားကို စာလံုးအေရာင္ အနီနဲ ့ ေဖၚျပေပးမွာပါ။ အေရာင္
ကို ကိုယ္စားျပဳတဲ့ number ကို \e[ နဲ ့ m ၾကားမွာ ထည့္ေပးျခင္းျဖင့္ အစျပဳရပါတယ္။ \e[0m နဲ ့ ျပန္
ပိတ္ေပးရပါတယ္။

#41 is RED BACKGROUND


echo -e "\e[41m$string\e[0m" ဒါက စာသားကို အနီေရာင္ background နဲ ့ ေဖၚျပေပးမွာပါ။ အေ
ရာင္ကို ကိုယ္စားျပဳတဲ့ number ကို \e[ နဲ ့ m ၾကားမွာ ထည့္ေပးျခင္းျဖင့္ အစျပဳရပါတယ္။ \e[0m နဲ ့
ျပန္ပိတ္ေပးရပါတယ္။

က်န္တဲ့ font color ေတြ၊ background ေတြသည္လည္း အလားတူပါပဲေနာ္။ တြဲပါတဲ့ color table
ထဲက number ေလးေတြကို ေျပာင္းၿပီး စမ္းၾကည့္ေပါ့ေနာ္။

အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ font color အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(7-5-2019)

++ [ arithmetic operators ] script-32 ++

ခုတခါ ေပါင္း ႏွဳတ္ ေျမွာက္စား လုပ္တဲ့ တြက္ခ်က္ျခင္းဆိုင္ရာ operators ေတြဆီ သြားရေအာင္။


operator ဆိုတာ ၾကားခံေဆာင္ရြက္ေပးတဲ့်ကာင္ေပါ့ေနာ္။

arithmetic operators ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။


Arithmetic Operators : These operators are used to perform normal
arithmetics/mathematical operations. There are 7 arithmetic operators:

1.Addition (+): Binary operation used to add two operands. ေပါင္းျခင္း။

2.Subtraction (-): Binary operation used to subtract two operands. ႏွဳတ္ျခင္း။

3.Multiplication (*) :Binary operation used to multiply two operands. ေျမွာက္ျခင္း။

4.Division (/) :Binary operation used to divide two operands. စားလဒ္ကို ေဖၚျပေပးပါတယ္။

5.Modulus (%) :Binary operation used to find remainder of two operands. အၾကြင္းကို ေ
ဖၚျပေပးပါတယ္။

6.Increment Operator (++) : Uniary operator used to increase the value of operand by
one. တိုးျခင္း။

7.Decrement Operator (–) : Uniary operator used to decrease the value of a operand by
one. ေလ်ာ့ျခင္း။

#example
ဒီ operators ေတြရဲ့ အလုပ္လုပ္ပံုကို စမ္းသပ္ဖို ့အတြက္၊ vi 32arithmetic_operators.sh ဆိုတဲ့ အ
မည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

#reading data from the user's INPUT


read -p 'Enter a : ' a
read -p 'Enter b : ' b

#ADDITION
add=$((a + b))
echo Addition of a and b are $add

#SUBTRACTION
sub=$((a - b))
echo Subtraction of a and b are $sub
#MULTIPLICATION
mul=$((a * b))
echo Multiplication of a and b are $mul

#DIVISION
div=$((a / b))
echo division of a and b are $div

#MODULUS
mod=$((a % b))
echo Modulus of a and b are $mod

#INCREMENT
((a++))
echo Increment operator when applied on "a" results into a = $a

#DECREMENT
((b--))
echo Decrement operator when applied on "b" results into b = $b

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 32arithmetic_operators.sh လို ့ သတ္မွတ္ပါ။

bash 32arithmetic_operators.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

လြယ္လြယ္ေလးမို ့ ရွည္ရွည္ေဝးေဝး ရွင္းမေနေတာ့ပါဘူး။

script ထဲက # နဲ ့ စထားတဲ့ comment ေတြကို ၾကည့္ရံုနဲ ့ ဘယ္ operator က ဘာအတြက္လဲ? ဘ


ယ္လို output ကို ထုတ္ေပးသလဲ? ဆိုတာ နားလည္ၾကမွာပါ။
အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ arithmetic operators ေတြအေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရ
ပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(8-5-2019)

++ [ relational operators ] script-33 ++

ခုတခါ ဆက္သြယ္ခ်က္ relational operators ေတြဆီ သြားရေအာင္။ a နဲ ့ b ဟာ တန္ဖိုးခ်င္း ညီတ


ယ္။ မညီဘူး။ a က ပိုႀကီးတယ္။ စသည္ျဖင့္ေပါ့ေနာ္။

relational operators ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

Relational Operators : Relational operators are those operators which defines the
relation between two operands. They give either true or false depending upon the
relation. They are of 6 types:

‘==’ Operator : Double equal to operator compares the two operands. Its returns true
is they are equal otherwise returns false.

‘!=’ Operator : Not Equal to operator return true if the two operands are not equal
otherwise it returns false.
‘<' Operator : Less than operator returns true if first operand is lees than second
operand otherwse returns false.

‘<=' Operator : Less than or equal to operator returns true if first operand is less than
or equal to second operand otherwise returns false

‘>’ Operator : Greater than operator return true if the first operand is greater than the
second operand otherwise return false.

‘>=’ Operator : Greater than or equal to operator returns true if first operand is greater
than or equal to second operand otherwise returns false.

#example
ဒီ operators ေတြရဲ့ အလုပ္လုပ္ပံုကို စမ္းသပ္ဖို ့အတြက္၊ vi 33retional_operators.sh ဆိုတဲ့ အမ
ည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

#reading data from the user


read -p 'Enter a : ' a
read -p 'Enter b : ' b

if (( $a==$b ))
then
echo a is equal to b.
else
echo a is not equal to b.
fi

if (( $a!=$b ))
then
echo a is not equal to b.
else
echo a is equal to b.
fi

if (( $a<$b ))
then
echo a is less than b.
else
echo a is not less than b.
fi

if (( $a<=$b ))
then
echo a is less than or equal to b.
else
echo a is not less than or equal to b.
fi

if (( $a>$b ))
then
echo a is greater than b.
else
echo a is not greater than b.
fi

if (( $a>=$b ))
then
echo a is greater than or equal to b.
else
echo a is not greater than or equal to b.
fi

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 33relational_operators.sh လို ့ သတ္မွတ္ပါ။

bash 33relational_operators.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…
ရွင္းရရင္ -->

လြယ္လြယ္ေလးမို ့ ရွည္ရွည္ေဝးေဝး ရွင္းမေနေတာ့ပါဘူး။ if ရဲ့ေနာက္က statement ေတြကို ေဘာင္


ခတ္တဲ့အခါ (( … )) ဒီ syntax ေလးနဲ ့ သြားတာ သတိျပဳပါ။

script ထဲက၊ if ေနာက္က၊ statement ေတြကို ၾကည့္ရံုနဲ ့ ဘယ္ operator က ဘာအတြက္လဲ? ဘ


ယ္လို output ကို ထုတ္ေပးသလဲ? ဆိုတာ နားလည္ၾကမွာပါ။ input မွာ a နဲ ့ b ရဲ့ တန္ဖိုးေလးေတြ ေျ
ပာင္းထည့္ၿပီး စမ္းၾကည့္ပါေနာ္။

အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ relational operators ေတြအေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾ
ကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(8-5-2019)

++ [ logical operators ] script-34 ++

ခုတခါ logical operators ေတြဆီ သြားရေအာင္။

if ရဲ့ေနာက္က statement ေဖၚျပခ်က္ေတြသည္ -->

AND အခ်က္ ၂ ခ်က္လံုး ကိုက္ညီမယ္ဆိုရင္။ ဘာလုပ္ပါ။ မညီရင္ ဘာလုပ္ပါ။


OR အခ်က္ ၂ ခ်က္ထဲက ၁ ခ်က္ ကိုက္ညီမယ္ဆိုရင္။ ဘာလုပ္ပါ။ မညီရင္ ဘာလုပ္ပါ။
NOT အခ်က္ေတြ တစ္ခုမွ မကိုက္ညီဘူးဆိုရင္။ ဘာလုပ္ပါ။ ညီရင္ ဘာလုပ္ပါ။

အဲ့လိုေပါ့ေနာ္။
logical operators ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

Logical Operators : They are also known as boolean operators. These are used to
perform logical operations. They are of 3 types:

1.Logical AND (&&) : This is a binary operator, which returns true if both the operands
are true otherwise returns false.

2.Logical OR (||) : This is a binary operator, which returns true is either of the operand
is true or both the operands are true and returns false if none of then is false.

3.Not Equal to (!) : This is a uninary operator which returns true if the operand is false
and returns false if the operand is true.

#example
ဒီ operators ေတြရဲ့ အလုပ္လုပ္ပံုကို စမ္းသပ္ဖို ့အတြက္၊ vi 34logical_operators.sh ဆိုတဲ့ အမည္
နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

#reading data from the user


read -p 'Enter a : ' a
read -p 'Enter b : ' b

if [[ ( $a == "true" && $b == "true" ) ]]


then
echo Both are true.
else
echo Both are not true.
fi

if [[ ( $a == "true" || $b == "true" ) ]]
then
echo Atleast one of them is true.
else
echo None of them is true.
fi
if [[ ( ! $a == "true" ) ]]
then
echo "a" was intially false.
else
echo "a" was intially true.
fi

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 34logical_operators.sh လို ့ သတ္မွတ္ပါ။

bash 34logical_operators.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

လြယ္လြယ္ေလးမို ့ ရွည္ရွည္ေဝးေဝး ရွင္းမေနေတာ့ပါဘူး။ logical operators ေတြကို ေဘာင္ခတ္တဲ့


အခါ [[ ( … )) ]] ဆိုတဲ့ syntax နဲ ့ သြားတာ သတိျပဳပါ။

script ထဲက၊ if ေနာက္က၊ statement ေတြကို ၾကည့္ရံုနဲ ့ ဘယ္ operator က ဘာအတြက္လဲ? ဘ


ယ္လို output ကို ထုတ္ေပးသလဲ? ဆိုတာ နားလည္ၾကမွာပါ။

အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ logical operators ေတြအေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(8-5-2019)
++ [ yes or no ] script-35 ++

ခုတခါ သြားမွာကေတာ့ yes or no ေမးခြန္းေလးေတြ ဖန္တီးတဲ့ script ေလးဆီပါ။

သူက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ yes သို ့မဟုတ္ no ေမးခြန္း ေမးမယ္။ yes ဆိုရွင္ ႀကိဳတင္
သတ္မွတ္ထားတဲ့ command ကို run မယ္။ no ဆိုရင္ မ run ဘူး။ input မွားထည့္ရင္ မွားထည့္ေၾ
ကာင္း reply ျပန္မယ္။ အဲ့လိုပါ။

ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ လိုအပ္လာတဲ့အခါ yes/no question ေလးေတြ ဖန္တီးတတ္


ဖို ့ပါ။

ကဲ ! စလိုက္ရေအာင္။

vi 35yes_no.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

read -p "Do you want to check current time? [yes/no] " input

case $input in

[yY][eE][sS]|[yY])
echo "$(date)"
;;
[nN][oO]|[nN])
echo "OK ! You select no"
;;
*)
echo "Invalid input plese type yes/y or no/n"
;;

esac

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 35yes_no.sh လို ့ သတ္မွတ္ပါ။

bash 35yes_no.sh နဲ ့ run ပါ။

run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။

https://mega.nz/…

ရွင္းရရင္ -->

#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။

read -p "Do you want to check current time? [yes/no] " input ဒါကေတာ့ read သည္ yes
or no aေမးခြန္းကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့ တန္ဖိုးကို input အမည္ရ variable အျဖစ္ ဖမ္းယူလိုက္
တာပါ။

case $input in ဒါကေတာ့ $input အမည္ရ variable ကိုယ္စားျပဳထားတဲ့ တန္ဖိုး (argument)


သည္ ဘာျဖစ္ခဲ့ရင္ ဆိုၿပီး case statement ကို စဖြင့္လိုက္တာပါ။

[yY][eE][sS]|[yY])
echo "$(date)"
;; ဒါကေတာ့ $input သည္ yes သို ့မဟုတ္ y ျဖစ္ခဲ့ရင္ date ဆိုတဲ့ command ကို run ခိုင္းလိုက္
တာပါ။ [yY][eE][sS] နဲ ့ [yY] ၾကားမွာ | ေလး ထည့္ထားတာကို သတိျပဳပါ။ | သို ့မဟုတ္လို ့ အဓိပၸါ
ယ္ရပါတယ္။

[nN][oO]|[nN])
echo "$(date)"
;; ဒါကေတာ့ $input သည္ no သို ့မဟုတ္ n ျဖစ္ခဲ့ရင္ OK ! You select no ဆိုတဲ့ စာသားကို ျပခိုင္း
လိုက္တာပါ။ [nN][oO] နဲ ့ [nN] ၾကားမွာ | ေလး ထည့္ထားတာကို သတိျပဳပါ။ | သို ့မဟုတ္လို ့ အဓိ
ပၸါယ္ရပါတယ္။
*)
echo "Invalid input please type yes/y or no/n"
;; ဒါကေတာ့ yes/y no/n မဟုတ္ပဲ တျခားဟာေတြ ထည့္ခဲ့ရင္၊ $input ရဲ့ ကိုစားျပဳတဲ့ တန္ဖိုး
(argument) သည္ တျခားဟာေတြ ျဖစ္ခဲ့ရင္၊ Invalid input please type yes/y or no/n ဆိုတဲ့ စား
သားကို ျပခိုင္းလိုက္တာပါ။

esac ဒါကေတာ့ case statement ၿပီးဆံုးေၾကာင္း ေၾကျငာတာပါ။ case ရဲ့ ေျပာင္းျပန္ေပါ့။

အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ yes/no script အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(9-5-2019)

ခုဆို shell scripting အေၾကာင္း ေလ့လာၾကရာမွာ၊ topics နဲ ့ script file ေပါင္း ၃၅ ခု၊ ရွိခဲ့ပါၿပီ။
script ေရးရာမွာ သိရမယ့္ အထားအသို အေျခခံသေဘာတရား အယူအဆ concepts ေတြကို အ
သားေပး ေဖၚျပထားတာပဲ ျဖစ္ပါတယ္။ real world မွာလည္း၊ script ေရးတိုင္း၊ မိမိ လိုလားခ်က္ ရဖို ့၊
ဒီ concept ေတြကိုပဲ ကုလားဖန္ထိုး သံုးေနရမွာပါ။

အဲ့ဒီေတာ့ ခုကစလို ့၊ concept ေတြ အေၾကာင္း ရပ္တန္ ့ၿပီး၊ real worl လက္ေတြ ့ ေလာက အတြက္
အသံုးဝင္မယ့္ script ေတြ အေၾကာင္း ဆက္လက္ ေဖၚျပေပးသြားမွာ ျဖစ္ပါတယ္။

အရင္လို အေသးစိတ္ ရွင္းမွာ မဟုတ္ေတာ့ပါဘူး။ code ေတြ ဘယ္လို ေရးထားလဲ? ခ်ိတထ


္ ားလဲ? ကို
ယ္တိုင္ ဖတ္ရွဳေလ့လာၾကပါ။ သိထားတဲ့ concept ေတြကို အသံုးခ်ၾကပါ လို ့။

အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(10-5-2019)

++ [ memory usage and drop caches ] script-36 ++

ဒီ script ေလးက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့ -->

၁။ လက္ရွိ memory usage ကို ျပသေပးပါတယ္။


၂။ memory အစားဆံုး process ဆယ္ခုကို ျပသေပးပါတယ္။
၃။ စက္ကို ေပါ့သြားေအာင္ caches ကို ရွင္းမလား ေမးပါတယ္။ y လို ့ input မွာ ထည့္ေပးလိုက္ရင္
caches ကို ရွင္းေပးပါလိမ့္မယ္။
၄။ caches ကို ရွင္းၿပီးတဲ့ေနာက္ ေျပာင္းလဲသြားတဲ့ memory usage အေနအထားကို ျပန္ျပေပးပါတ
ယ္။

vi 36memory_usage.sh အမည္နဲ ့ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo -e "\e[42mMemory Usage\e[0m"


free -ht

echo -e "\e[42mTop 10 Processes As Far As Memory Usage Is Concerned\e[0m"


ps -eo %mem,%cpu,comm --sort=-%mem | head

read -p "Do You Want To Drop Caches? (yes|no):" input

case $input in

[Yy][eE][sS]|[Yy])
sudo sync; echo 3 > /proc/sys/vm/drop_caches
echo -e "\e[42mMemory Usage After Dropping The Caches\e[0m"
free -ht
;;

[Nn][Oo]|[Nn])
echo "Exit"
;;
*)
echo "Invalid Input"
;;

esac

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 36memory_usage.sh လို ့ သတ္မွတ္ပါ။

ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။

ဘယ္လို ေရးထားလည္း source code ကို ကိုယ္တိုင္ေလ့လာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန ရယူႏိုင္ပါတယ္။

https://mega.nz/…

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(10-5-2019)
++ [ user information ] script-37 ++

ဒီ script ေလးက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့ -->

၁။ current user ကို ျပေပးပါတယ္။


၂။ remote ကေန login ဝင္ေနတဲ့ user ေတြ ရွိရင္လည္း ျပေပးပါတယ္။
၃။ system ရဲ့ uptime ကို ျပေပးပါတယ္။
၄။ ယခင္က login ဝင္ခဲ့တဲ့ 1-10 list ကို ျပေပးပါတယ္။

vi 37user_info.sh အမည္နဲ ့ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

echo -e "\e[42mCurrent User\e[0m"


who

echo -e "\e[42mCurrent Logged In List\e[0m"


w -f
echo -e "\e[42mSystem Uptime\e[0m"
uptime

echo -e "\e[42mLast Logged In List (1 to 10)\e[0m"


last -n 10

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 37user_info.sh လို ့ သတ္မွတ္ပါ။

ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။

ဘယ္လို ေရးထားလည္း source code ကို ကိုယ္တိုင္ေလ့လာပါ။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန ရယူႏိုင္ပါတယ္။

https://mega.nz/…

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(11-5-2019)
++ [ backup the directory ] script-38 ++

ဒီ script ေလးက အရမ္း အသံုးဝင္ပါတယ္။ သူက ဘယ္လို အလုပ္လုပ္ေပးသလဲဆိုေတာ့ -->

၁။ backup လုပ္ခ်င္တဲ့ directory/folder ကို gzip format နဲ ့ ၿခံဳ ့ေပးပါတယ္။


၂။ ၿခံဳ ့ရာမွာ file name ကို date time နဲ ့ အမည္ေပးတာေၾကာင့္ backup folder ထဲမွာ file ေတြ အ
မည္မထပ္ေတာ့ပါဘူး။ ဘယ္ backup ကေတာ့ ဘယ္ေန ့ ဘယ္အခ်ိန္က လုပ္ထားတာဆိုၿပီး စစ္ေ
ဆးရ ပိုလြယ္သြားပါတယ္။
၃။ ၿခံဳ ့ၿပီးတဲ့ file ကို backup folder ထဲ သြားသိမ္းေပးပါတယ္။

vi 38backup_dir.sh အမည္နဲ ့ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash
source="/home/yinthu/example/folder/"
filename=/home/yinthu/example/bk-$(date +%-Y%-m%-d)-$(date +%-T).tgz

zip="/home/yinthu/example/*.tgz"
destination="/examplebackup"
tar -czf $filename --absolute-names $source
mv $zip $destination

echo -e "\e[42mBackup Complete\e[0m"


ls -l $destination

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 38backup_dir.sh လို ့ သတ္မွတ္ပါ။

ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။

ဘယ္လို ေရးထားလည္း source code ကို ကိုယ္တိုင္ေလ့လာပါ။ တစ္ခု ေျပာစရာ ရွိတာက source,
filename နဲ ့ destination, zip ေနရာေတြမွာ မိမိ backup လုပ္မယ့္ လမ္းေၾကာင္း အမွန္ကို ေရးသြ
င္းေပးပါ။ ျပင္ဆင္ေပးပါ။ ဒီ script မွာ ထည့္ထားတဲ့ လမ္းေၾကာင္းေတြက က်ေနာ့္စက္က လမ္းေၾကာ
င္းေတြမို ့ အျခားစက္ေတြနဲ ့ တူမွာ မဟုတ္ပါဘူး။

ဒီ script က manual run ရမယ့္ script မဟုတ္ပါဘူး။ crontab နဲ ့ တြဲၿပီး daily backup အတြက္
သံုးရတဲ့ script ပါ။

terminal မွာ crontab -e လို ့ ရိုက္ enter ေခါက္ပါ။ crontab ပြင့္လာရင္ စာသားေတြ insert လုပ္ႏိုင္
ဖို ့ i ကို ႏွိပ္ပါ။ ၿပီးရင္ -->

* 13 * * * /example/backup_dir.sh လို ့ ေရးသြင္းပါ။ Esc :wq နဲ ့ ျပန္ထြက္ပါ။


/example/backup_dir ေနရာမွာကိုယ့္ script file ရွိတဲ့ လမ္းေၾကာင္း path အမွန္ကို ေရးသြင္းပါ။

ဒါဆို ေန ့စဥ္ နံနက္ ၁ နာရီ ထိုးတိုင္း backup ျပဳလုပ္ေပးပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန ရယူႏိုင္ပါတယ္။

https://mega.nz/…

အားလံုး အဆင္ေျပပါေစ။

Yin Thu
(12-5-2019)
++ [ backup mysql database ] script-39 ++

ဒါသည္လည္း real world မွာ သံုးေနတဲ့ script တစ္ခုပါ။ system သမား ၁ ေယာက္ အေနနဲ ့
database ကို daily backup လုပ္ဖို ့လည္း ႀကံဳေတြ ့ရမွာ မလြဲပါဘူး။

ဒီ script ေလးမွာ သူ ့ရဲ့ စိတ္ဝင္စားစရာ အေကာင္းဆံုး အပိုင္းက backup file ေပါင္း ၃၀ ေက်ာ္သြား
တာနဲ ့ အေစာဆံုး နံပါတ္ ၁ ဖိုင္ကို အလိုေလ်ာက္ ဖ်က္ေပးတဲ့ စနစ္ပါ။ backup ကို အခု ၃၀ ထက္ ပို
မထားတဲ့ သေဘာေပါ့။

file ေတြကို time အလိုက္ စီေပးတဲ့ ls -lt ရဲ့ အသံုးဝင္ပံုေတြ၊ result ထဲမွာ Line ဘယ္ႏွစ္ခုပါသလဲ ေ
ဖၚျပေပးတဲ့ wc -l ရဲ့ အသံုးဝင္ပံုေတြကို ေပါင္းစပ္ထားတာပါ။

code ကို ကိုယတ


္ ိုင္ ေလ့လာၾကည့္ရင္ နားလည္သြားမွာပါ။ လိုအပ္သလို ျပင္ေရးတတ္သြားမွာပါ။ ဆ
က္ရေအာင္။

ဒီ script ေလးက ဘယ္လို အလုပ္လုပ္ေပးသလဲ ဆိုေတာ့ -->

၁။ MySQL database ကို သတ္မွတ္ folder ဆီ backup လုပ္ေပးပါတယ္။


၂။ backup folder ထဲမွာ file ၃၀ ေက်ာ္ေနၿပီလား စစ္ေပးပါတယ္။
၃။ ရက္ ၃၀ ျပည့္လုိ ့ ၃၁ ရက္ေန ့ေျမာက္သြားရင္ ၁ ရက္ေန ့က backup ကို ဖ်က္ေပးပါတယ္။

vi 39backup_db.sh အမည္နဲ ့ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

#!/bin/bash

filename=exampledb-$(date +%-Y%-m%-d)-$(date +%-T)

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

DB_BACKUP_PATH='/backup_db/'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_USER='root'
MYSQL_PASSWORD='redhat'
DATABASE_NAME='exampledb'

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

echo -e "\e[42mBackup started for database - $DATABASE_NAME\e[0m"

mysqldump -h $MYSQL_HOST \
-P $MYSQL_PORT \
-u $MYSQL_USER \
-p$MYSQL_PASSWORD \
$DATABASE_NAME > $DB_BACKUP_PATH$filename.sql

echo "##############################################"

ls -lth $DB_BACKUP_PATH

echo -e "\e[42mBackup Complete\e[0m"

sleep 5s

file_number=`ls -lth $DB_BACKUP_PATH | grep $DATABASE_NAME | wc -l`

if [ $file_number -eq 30 ]
then

echo -e "\e[31mbackup are 30\e[0m"


rm -rf $(ls -1th | grep $DATABASE_NAME | tail -n 1)
elif [ $file_number -gt 30 ]
then

echo -e "\e[31mbackup are greater than 30\e[31m"

else

echo -e "\e[31mbackup are less than 30\e[0m"

fi

ၿပီးရင္ Esc :wq နဲ ့ သိမ္းပါ။

chmod a+x 39backup_db.sh လို ့ သတ္မွတ္ပါ။

ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။

စမ္းဖို ့ အတြက္ MySQL ကို install လုပ္ၿပီး database တစ္ခု ေဆာင္ထားဖို ့ေတာ့ လိုမယ္ေနာ္။

ဘယ္လို ေရးထားလည္း source code ကို ကိုယ္တိုင္ေလ့လာပါ။ တစ္ခု ေျပာစရာ ရွိတာက -->

ဒီ script မွာ ထည့္ထားတဲ့ လမ္းေၾကာင္းေတြက က်ေနာ့္စက္က လမ္းေၾကာင္းေတြမို ့ အျခားစက္ေတြ


နဲ ့ တူမွာ မဟုတ္ပါဘူး။ မိမိ backup လုပ္မယ့္ လမ္းေၾကာင္း အမွန္ကို ေရးသြင္းေပးပါ။ ျပင္ဆင္ေပးပါ။

ဒီ script က manual run ရမယ့္ script မဟုတ္ပါဘူး။ crontab နဲ ့ တြဲၿပီး daily backup အတြက္
သံုးရတဲ့ script ပါ။

terminal မွာ crontab -e လို ့ ရိုက္ enter ေခါက္ပါ။ crontab ပြင့္လာရင္ စာသားေတြ insert လုပ္ႏိုင္
ဖို ့ i ကို ႏွိပ္ပါ။ ၿပီးရင္ -->

* 13 * * * /example/backup_db.sh လို ့ ေရးသြင္းပါ။ Esc :wq နဲ ့ ျပန္ထြက္ပါ။ /backup_db ေန


ရာမွာကိုယ့္ backup folder ရွိတဲ့ လမ္းေၾကာင္း path အမွန္ကို ေရးသြင္းပါ။

ဒါဆို ေန ့စဥ္ နံနက္ ၁ နာရီ ထိုးတိုင္း MySQL Database ကို backup ျပဳလုပ္ေပးပါလိမ့္မယ္။

source file ကိုေတာ့ ေအာက္ပါ Link ကေန ရယူႏိုင္ပါတယ္။

https://mega.nz/…

အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(13-5-2019)

Linux Shell Scripting Essential By Yin Thu (Xero Cool)

You might also like