Professional Documents
Culture Documents
Linux Shell Scripting Essential by Yin Thu (Xero Cool)
Linux Shell Scripting Essential by Yin Thu (Xero Cool)
ဒီစာအုပ္ေလးကေတာ့ Linux Ninja – Myanmar Page မွာ shell scripting အေၾကာင္း တင္ထားသ
မွ်ကို တစ္စုတစ္စည္းတည္း ျပန္ေပါင္းစပ္ထားတာပါ။ Basic Concept ေတြ၊ အထားအသို Syntax ေ
တြကို example သံုးဆယ့္ငါးခုနဲ ့ ရွင္းျပထားၿပီး လက္ေတြ ့ေလာကမွာ အသံုးျပဳႏိုင္တဲ့ script ေလးခု
ပါရွိပါတယ္။
ဒါပါပဲဗ်ာ။
shell script အေၾကာင္း မေျပာခင္ user >> application >> shell >> kernel >> hardware ဆို
တဲ့ ဆက္သြယ္ခ်က္ကို အရင္သိထားဖို ့ လိုပါတယ္။
shell ေတြ အမ်ိဳးမ်ိဳး ရွိတဲ့ အထဲမွာမွ bash shell ဟာ ထင္ရွားပါတယ္။ bash ရဲ့ အဓိပၸါယ္က bourne
again 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 script ေတြကို ဘယ္လို ေနရာမွာ သံုးလဲ? က်ေနာ့္ အေတြ ့ အႀကံဳအရေျပာရရင္၊ backup
process လို ေန ့စဥ္ ေဆာင္ရြက္ေနရတဲ့ အလုပ္ေတြ၊ Plugin ဖန္တီးတာေတြ၊ complex task ေတြ၊ စ
သည္ျဖင့္ ဒီလို ေနရာေတြမွာ သံုးပါတယ္။
အားလံုး အဆင္ေျပပါေစ။
PS --> [ Post ကို ႏွစ္သက္လ်ွင္ Like, Comment, Share လုပ္ႏိုင္ပါတယ္။ Page မွာ တင္သမ်ွ ျမင္
ရဖို ့ Page ကို Like အျပင္ see first လုပ္ထားရန္ လိုအပ္ပါတယ္ ]
Yin Thu
(23-4-2019)
ေနာက္တစ္ခ်က္က daily backup လုပ္တဲ့အခါ၊ backup file ေတြကို script သံုးၿပီး၊ အမည္ေတြကို
date အလိုက္ မတူေအာင္ စီၿပီး၊ အလိုေလ်ာက္ သိမ္းလိုတဲ့အခါ ဒီ script ေလးကေန ရလာတဲ့ အယူ
အဆ concept ေတြကို အသံုးခ်တတ္ဖို ့ပါ။ ဒီအခ်က္က အသက္ပါ။
ဥပမာ၊ ဒီေန ့ backup လုပ္တဲ့ file အမည္က ဒီေန ့ date ေလးနဲ ့။ နက္ဖန္ backup လုပ္တဲ့ file အမ
ည္က နက္ဖန္ date ေလးနဲ ့။ အဲ့လိုေပါ့။
ကဲ ! စရေအာင္။
#!/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"
ရွင္းရရင္ -->
#!/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 အျဖစ္ ေၾကျငာလိုက္တာပါ။
ဆက္ရွင္းရရင္ -->
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 ရက္စြဲကို ေဖၚျပေပးပါတယ္။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 03date_time.sh
သို ့မဟုတ္
./02date_time.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ date and time ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(24-4-2019)
++ [ adding numeric value ] script-03 ++
ကဲ ! စရေအာင္။
#!/bin/bash
ရွင္းရရင္ -->
#!/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 အမွန္ရမွာပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 03sum.sh
သို ့မဟုတ္
./03sum.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ comment ေရးျခင္းနဲ ့ ေပါင္းျခင္းဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(26-4-2019)
++ [ reading the input value ] script-04 ++
ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ input ေတြကို ဘယ္လို read ဖတ္ယူ၊ ဖမ္းယူမလဲ? သူတို ့ကို
variable နဲ ့ ဘယ္လို ကိုယ္စားျပဳမလဲ? သိဖို ့ပါ။
ကဲ ! စရေအာင္။
#!/bin/bash
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
[ echo "enter first value"
read first ] မွာ echo သည္ enter first value ဆိုတဲ့ စာသားကို ျပသေပးရံုပါ။ read သည္ ကြက္လ
ပ္ input တစ္ခုကို ဖန္တီးၿပီး အဲ့အထဲ ထည့္လိုက္တဲ့ value ကို first ဆိုတဲ့ variable အျဖစ္ ဖတ္ယူ၊
ဖမ္းယူ လိုက္ပါေတာ့တယ္။
echo "the result is : $sum" <-- ဒါကေတာ့ $sum ဆိုတဲ့ variable ကို သံုးၿပီး သူကိုယ္စားျပဳထား
တဲ့၊ ေပါင္းလို ့ ရလာတဲ့ ရလဒ္ကို ေဖၚျပေပးတာပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 04reading_input.sh
သို ့မဟုတ္
./04reading_input.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ input ေတြကို ဖမ္းယူျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(24-4-2019)
#!/bin/bash
string1="Linux"
string2="Ninja"
string3="Myanmar"
echo -e "$string1 $string2 $string3\n"
ရွင္းရရင္ -->
#!/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 ပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 05combine_string.sh
သို ့မဟုတ္
./05combine_string.sh
run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ string ေတြကို ေပါင္းစပ္ျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(27-4-2019)
ခုတခါ main string မူလစာသားအရွည္ ထဲကေနမွ မိမိစိတ္ႀကိဳက္ substring စကားစု ၁ ခုကို ဆြဲထု
တ္ၾကည္ရေ
့ အာင္။
ကဲ ! စရေအာင္။
#!/bin/bash
mainstring="Learn Linux from google"
substring=${mainstring:17:6}
echo $substring
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
mainstring="Learn Linux from google" မွာ mainstring အမည္ရ variable သည္ Learn Linux
from google ဆိုတဲ့ စာသားကို ကိုယ္စားျပဳေၾကာင္း ေၾကျငာတာပါ။
echo $substring ဆိုတာကေတာ့ ရွင္းပါတယ္။ $substring အမည္ရ variable ကို ယူသံုးၿပီး သူကို
ယ္စားျပဳထားတဲ့ တန္ဖိုး google ဆိုတဲ့ စကားလံုးကို ေဖၚျပခိုင္းလိုက္တာပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 06get_substring.sh
သို ့မဟုတ္
./06get_substring.sh
က်ေနာ္တို ့ရဲ့ substring ေတြကို ဆြဲထုတ္ျခင္း ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(27-4-2019)
ကဲ ! စရေအာင္။
#!/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
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
echo "enter the value" သည္ enter the value ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။
read n မွာ read သည္ input တစ္ခုကို ထည့္ခိုင္းၿပီး အဲဒီ input ကို n တဲ့ variable အျဖစ္ ဖမ္းယူလို
က္တာပါ။
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 ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 07if_then_else.sh
သို ့မဟုတ္
./07if_then_else.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ if then else ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(28-4-2019)
ယခင္ ေဖၚျပခဲ့တဲ့ if then else နဲ ့ မတူတာက elif ဆိုတာေလး ပိုလာတာပါ။ elif ဆိုတာ else if ရဲ့
အတိုေကာက္ပါ။ အဲဒီ elif ေၾကာင့္ မတူညီတဲ့ input ေတြ အမ်ားႀကီးကို ကိုင္တြယ္ေျဖရွင္းႏိုင္လာပါတ
ယ္။
ကဲ ! စရေအာင္။
#!/bin/bash
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
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
echo "Enter your lucky number" ကေတာ့ Enter your lucky number ဆိုတဲ့ စာသားကို ေဖၚျပေ
ပးတာပါ။
read n သည္ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့အခါ အဲ့ဒီ input ကို n အမည္ရ variable အျ
ဖစ္ ဖမ္းယူလိုက္ပါတယ္။
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 လို ့ ရိုက္ထည့္ၾကည့္ပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 08if_then_elif_else.sh
သို ့မဟုတ္
./08if_then_elif_else.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ if then elif else ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(29-4-2019)
ကဲ ! စရေအာင္။
#!/bin/bash
if [[ ( $username -eq "admin" && pin -eq "12345" && $password -eq "secret" ) ]];
then
echo "valid user"
else
echo "invalid user"
fi
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
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 ဆိုတဲ့
စာသားေလးကို ေဖၚျပပါလိမ့္မယ္။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 09if_and.sh
သို ့မဟုတ္
./09if_and.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ if နဲ ့ AND Logic ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(29-4-2019)
++ [ if statement with OR Logic ] script-10 ++
ရုပ္ေခ်ာရမယ္။ သို ့မဟုတ္ ပိုက္ဆံ ရွိရမယ္။ ဒီ ၂ ခ်က္ထဲက ၁ ခ်က္နဲ ့ ညီရင္ အေျဖေပးမယ္။ ဒီလို
သေဘာတရားေပါ့။
ကဲ ! စရေအာင္။
#!/bin/bash
then
echo "You won the game"
else
echo "You lost the game"
fi
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
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 ဆိုတဲ့ စာသားကို ေဖၚျပေပးမွာ
ပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 10if_or.sh
သို ့မဟုတ္
./10if_or.sh
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(30-4-2019)
သူက ဘယ္လို အလုပ္လုပ္သလဲ? ဆိုေတာ့ --> case statement မွာ ကိုယ္လို ခ်င္တဲ့ တန္ဖိုးေတြကို
ႀကိဳတင္သတ္မွတ္ေပးထားရပါတယ္။ ထည့္လိုက္တဲ့ input ေတြကို ႀကိဳသတ္မွတ္ထားတဲ့ တန္ဖိုးေတြ
နဲ ့ တိုက္စစ္ၿပီး result/output ေတြကို ထုတ္ေပးပါတယ္။ တခုမွ မကိုက္ညီရင္လည္း မကိုက္ညီေၾကာ
င္း try again စသည္ျဖင့္ result/output မ်ိဳးကို ထုတ္ေပးတယ္ေပါ့ေနာ္။
ဒီ script ေလးကေတာ့ မတူညီတဲ့ input အမ်ိဳးမ်ိဳး အတြက္ မတူညီတဲ့ result/output ေတြ ဖန္တီးေ
ပးတတ္ဖို ့ပါ။
ကဲ ! စရေအာင္။
vi 11case.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။
#!/bin/bash
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
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
echo "Enter your lucky number between 1 and 3" သည္ အထူးအဆန္း မဟုတ္ပါ။ Enter
your lucky number between 1 and 3 ဆိုတဲ့ စာသားေလးကို ေဖၚျပေပးတာပါ။
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 ဆိုတဲ့ စာသားေလးကို ေ
ဖၚျပေပးမွာပါ။ အဆံုးမွာ ;; ႏွစ္ခုပါတာကို ဂရုျပဳပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 11case.sh
သို ့မဟုတ္
./11case.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ case statement ဆိုင္ရာ shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(30-4-2019)
ခုတခါ သြားမွာကေတာ့ while loop အေၾကာင္းပါ။ while အေၾကာင္း မေျပာခင္ loop အေၾကာင္း အ
ရင္ ေျပာရေအာင္။ loop ဆိုတာ သံသရာလည္တယ္၊ စက္ဝန္းပတ္တယ္၊ အဖန္ဖန္လုပ္တယ္၊ ေပါ့ေ
နာ္။ ဘယ္အထိ သံသရာလည္သလဲ ဆိုေတာ့ လိုလားခ်က္နဲ ့ မညီမခ်င္း command တစ္ခုကို အႀကိ
မ္ႀကိမ္ အဖန္ဖန္ run ၿပီး သံသရာလည္တာပါ။
ကဲ ! စရေအာင္။
#!/bin/bash
i=0
while [ $i -le 3 ]
do
done
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
while [ $i -le 3 ]
do ဆိုတာကေတာ့ $i ကိုယ္စားျပဳထားတဲ့ တန္ဖိုးသည္ 3 ထက္ ငယ္ေနစဥ္မွာ do ေအာက္ပါ
command ကို run ပါဆိၿု ပီး while loop ကို စဖြင့္လိုက္တာပါ။ [ $i -le 3 ] ကို condition အေျခအေ
န လို ့ ေခၚပါတယ္။
(( i++ )) ဒါကေတာ့ loop တစ္ႀကိမ္ပတ္ၿပီးတိုင္း၊ echo command ကို တစ္ခါ run ၿပီးတိုင္း၊ i ရဲ့ တန္
ဖိုးမွာ 1 တိုးေပးသြားဖို ့ပါ။
done ဒါကေတာ့ while loop ကို ၿပီးဆံုးေၾကာင္း ျပန္ပိတ္ေပးလိုက္တာပါ။ i ကို 1 တိုးရင္း 3 နဲ ့ ညီတဲ့
အခါ ၿပီးဆံုးမွာပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 12while_loop.sh
သို ့မဟုတ္
./12while_loop.sh
run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ while loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(1-5-2019)
ခုတခါ infinite loop အေၾကာင္း ေလ့လာၾကရေအာင္။ infinite အဆံုးမဲ့တဲ့ loop ေပါ့။ endless loop
လို ့လည္း ေခၚပါတယ္။ keyboard ေပၚက ctrl+c ကို မႏွိပ္မခ်င္း run ေနမွာပါ။ while ကို အသံုးျပဳၿပီး
infinite loop ေတြ ဖန္တီးရတာ အရမ္း ရိုးရွင္းပါတယ္။
ကဲ ! စရေအာင္။
#!/bin/bash
i=0
while true
do
(( i++ ))
done
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
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 ထပ္ထပ္ တိုးေပး
သြားတာပါ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 13while_infinite_loop.sh
သို ့မဟုတ္
./13while_infinite_loop.sh
*** run ေနတာကို ရပ္တန္ ့လိုရင္ keyboard ေပၚက ctrl + c ကို တြဲႏွိပ္ေပးပါ ***
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ infinite loop ေခၚ endless loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(1-5-2019)
ကဲ ! စရေအာင္။
#!/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"
done
ရွင္းရရင္ -->
#!/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 ကို ရပ္တန္ ့ခိုင္းလိုက္တာပါ။
echo "Hello $name, have a nice day" ဒါကေတာ့ ရွင္းပါတယ္။ Hello $name, have a nice day
ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။ $name ေနရာမွာ သူကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို ျပသေပးပါလိမ့္မ
ယ္။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 14while_break.sh
သို ့မဟုတ္
./14while_break.sh
*** run ေနတာကို ရပ္တန္ ့လိုရင္ input မွာ q လို ့ ထည့္ေပးလိုက္ပါ ***
source file ကိုေတာ့ ေအာက္ပါ Link ကေန download လုပ္ ရယူႏိုင္ပါတယ္။
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ while နဲ ့ ေရးထားတဲ့၊ infinite loop ကို break လုပ္တဲ့အေၾကာင္း shell script ေလးကို
ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(1-5-2019)
ခုတခါ သြားမွာကေတာ့ for loop အေၾကာင္းပါ။ for အေၾကာင္း မေျပာခင္ loop အေၾကာင္း အရင္ ေျ
ပာရေအာင္။ loop ဆိုတာ သံသရာလည္တယ္၊ စက္ဝန္းပတ္တယ္၊ အဖန္ဖန္လုပ္တယ္၊ ေပါ့ေနာ္။ ဘ
ယ္အထိ သံသရာလည္သလဲ ဆိုေတာ့ လိုလားခ်က္နဲ ့ မညီမခ်င္း command တစ္ခုကို အႀကိမ္ႀကိမ္
အဖန္ဖန္ run ၿပီး သံသရာလည္တာပါ။
ကဲ ! စရေအာင္။
done
printf "\n"
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
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 ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 115for_loop.sh
သို ့မဟုတ္
./15for_loop.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ fpr loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(2-5-2019)
ကဲ ! စရေအာင္။
#!/bin/bash
i=0
for (( ; ; ))
do
(( i++ ))
done
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
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 ဘယ္ႏွစ္ပတ္လဲ သိရမယ္ေလ။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 16for_infinite_loop.sh
သို ့မဟုတ္
./16for_infinite_loop.sh
*** run ေနတာကို ရပ္တန္ ့လိုရင္ keyboard ေပၚက ctrl + c ကို တြဲႏွိပ္ေပးပါ ***
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 သံုးၿပီး ထြက္တဲ့ အေၾ
ကာင္းဆီ သြားၾကရေအာင္။
ကဲ ! စရေအာင္။
#!/bin/bash
for (( ; ; ))
do
read -p "Enter your name (press q to quit) : " firstname lastname
if [ $firstname == q ]
then
break
fi
name="$firstname $lastname"
done
ရွင္းရရင္ -->
#!/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 ကို ရပ္တန္ ့ခိုင္းလိုက္တာပါ။
echo "Hello $name, have a nice day" ဒါကေတာ့ ရွင္းပါတယ္။ Hello $name, have a nice day
ဆိုတဲ့ စာသားကို ေဖၚျပေပးဖို ့ပါ။ $name ေနရာမွာ သူကိုယ္စားျပဳထားတဲ့ တန္ဖိုးကို ျပသေပးပါလိမ့္မ
ယ္။
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 17for_break.sh
သို ့မဟုတ္
./17for_break.sh
*** run ေနတာကို ရပ္တန္ ့လိုရင္ input မွာ q လို ့ ထည့္ေပးလိုက္ပါ ***
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ for နဲ ့ ေရးထားတဲ့၊ infinite loop ကို break လုပ္တဲ့အေၾကာင္း shell script ေလးကို ဒီ
မွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(3-5-2019)
++ [ simple loop by for ] script-18 and 19 ++
အထူးအေထြ မရွင္းျပေတာ့ပါဘူး။
#!/bin/bash
for i in 1 2 3 4 5
do
done
နဲနဲ ရွင္းရရင္ --> for i in 1 2 3 4 5 ကေတာ့ i ရဲ့ တန္ဖိုးကို 1 ကေန 5 အထိ တစ္ဆင့္ျခင္း တိုးသြား
ဖို ့ပါ။ loop ငါးႀကိမ္ ပတ္မယ္ေပါ့။ ဒီသေဘာပါ။
https://mega.nz/…
for i in {1..1500}
do
done
နဲနဲ ရွင္းရရင္ --> for i in {1..1500} ကေတာ့ i ရဲ့ တန္ဖိုးကို 1 ကေန 1500 အထိ တစ္ဆင့္ျခင္း တိုး
သြားဖို ့ အတိုေကာက္ေရးထားတာပါ။ loop အႀကိမ္ 1500 ပတ္မယ္ေပါ့။ ဒီသေဘာပါ။
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
၅။ 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 ျဖစ္သြားပါတယ္။
၅။ loop ပတ္ရင္း ဆံုးမွတ္ end point ကို ေရာက္မွ loop ကေန ထြက္သြားပါတယ္။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(3-5-2019)
++ [ commenting ] script-20 ++
:'
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
'
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
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 ႏွစ္ခုေပါ့။
လက္ေတြ ့လုပ္ၾကည္ရေ
့ အာင္။
!/bin/bash
ရွင္းရရင္ -->
ထည့္လိုက္တဲ့ Yin သည္ argument 1 ပါ။ script ထဲကေန $1 အမည္ရ variable အျဖစ္ လွမ္းကိုယ္
စားျပဳလိုက္ပါတယ္။
ထည့္လိုက္တဲ့ Thu သည္ argument 2 ပါ။ script ထဲကေန $2 အမည္ရ variable အျဖစ္ လွမ္းကိုယ္
စားျပဳလိုက္ပါတယ္။
https://mega.nz/…
script file ရဲ့ ေနာက္ကေန argument ေတြကို တိုက္ရိုက္ထည့္တဲ့ သေဘာတရားကို ဒီမွ်နဲ ့ တစ္ခန္း
ရပ္ပါရေစ။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(4-5-2019)
++ [ input style ] script-22 ++
ခုတခါ သြားမွာက script တခုကို run တဲ့အခါ input ထည့္ခိုင္းရာမွာ မတူညီတဲ့ ပံုစံေလးေတြပါ။
ပထမ ထည့္ရတဲ့ Yin ဆိုတဲ့ တန္ဖိုးသည္ Enter your first name ဆိုတဲ့ စသားရဲ့ ေအာက္မွာပါ။
ဒုတိယ ထည့္ရတဲ့ Thu ဆိုတဲ့ တန္ဖိုးသည္ Enter your last name ဆိုတဲ့ စာသားရဲ့ နံေဘးမွာပါ။
ဒီ script ေလးရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ ဒီလို style မတူညီတာေတြကို ဘယ္လို ဖန္တီးရမလဲ သိဖို ့ပါ။
ေအာက္ပါ script ေလးကို 22input_style.sh အမည္နဲ ့ ေရးၿပီး run ၾကည့္လိုက္ရင္ comment ေတြ
ဘယ္လို အလုပ္လုပ္သလဲ နားလည္သြားမွာပါ။
#!/bin/bash
#output result
echo "Your name is $name1 $name2"
ရွင္းရရင္ -->
read -p "Enter your last name :" name2 ဒါကေတာ့ input ကို စာသားေဘးမွာ ထည့္ခိုင္းတာပါ။
echo လံုးဝ မသံုးတာကို သတိျပဳပါ။ read ကို -p ဆိုတဲ့ option နဲ ့ တြဲသံုးသြားတာပါ။
bash 22input_style.sh လို ့ run ၾကည့္ပါ။
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(4-5-2019)
ဒီ concept ေတြကို နားလည္မွသာ၊ real world လက္ေတြ ့ေလာကမွာ အသံုးျပဳဖို ့ script ေတြကို ေ
ရးသားႏိုင္မွာပါ။ online က ရလာတဲ့ script ေတြကို မိမိ လိုအပ္ခ်က္နဲ ့ ကိက
ု ္ေအာင္ ျပဳ ျပင္ႏိုင္မွာပါ။
Linux ေလာကမွာ shell script မေရး တတ္ရင္ ေရရွည္ အတြက္ အဆင္မေျပပါဘူး။ noob ေနမွာပါ။
*** concept ေတြ ၿပီးသြားတဲ့အခါမွ real world မွာ သံုးတဲ့ script ေတြကို ဆက္ေလ့လာၾကတာေပါ့
***
ဒါပါပဲ။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(4-5-2019)
nested loop ဆိုတာ ဘာလဲ? အျပင္မွာ outer loop တစ္ခု။ အတြင္းမွာ inner loop တစ္ခု။ အဲ့လို ငံု
ထားတဲ့ loop ႏွစ္ဆင့္ကို nested loop လို ့ ေခၚတာပါ။
သူက ဘယ္လို run သလဲ? inner loop မွာ အပတ္ေရ အျပည့္ run ၿပီးမွ outer loop သည္ တစ္ပတ္
သာ ျပည့္ပါတယ္။
ကဲ ! စရေအာင္။
#!/bin/bash
done
ရွင္းရရင္ -->
ဒီ script မွာ for loop ႏွစ္ခုကို ေတြ ့ရမွာပါ။ ၁ ခုက outer loop ျဖစ္ၿပီး ၁ ခုက inner 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 သည္ ၃ ႀကိမ္ ပ
တ္မွာပါ။
*** သတိျပဳရမွာက inner loop မွာ အပတ္ေရ ၃ ပတ္ အျပည့္ ပတ္ၿပီးမွ outer loop မွာ ၁ ပတ္ပဲ ရွိ
ဦးမွာပါ ***
script ေရးၿပီးတဲ့အခါ သူ ့ကို execute လုပ္ run ႏိုင္ေအာင္ permission ေျပာင္းေပးရပါမယ္။ ေအာ
က္ပါ အတိုင္းေပါ့။
bash 23for_nested_loop.sh
သို ့မဟုတ္
./23for_nested_loop.sh
https://mega.nz/…
က်ေနာ္တို ့ရဲ့ for နဲ ့ ေရးထားတဲ့၊ nested loop အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(4-5-2019)
++ [ function ] script-24 and 25 ++
သိထားရမွာက function ေတြသည္ အလိုေလ်ာက္ မ run ပါဘူး။ သူ ့ကို ေခၚသံုးလိုက္မွ run ေပးတာ
ပါ။
ဒီေနရာမွာ function မသံုးထားတဲ့ script နဲ ့ function သံုးထားတဲ့ script ႏွစ္ခုကို ႏွိဳင္းယွဥ္ ျပသသြား
ပါ့မယ္။
ကဲ ! စရေအာင္။
#!/bin/bash
for (( ; ; ))
do
done
ဆိုတဲ့ string စာသား ၂ ေၾကာင္းက အၿမဲ ပါေနတာကို ေတြ ့ရမွာပါ။ ဒီ ၂ ေၾကာင္းကို function ထဲ ထ
ည့္လိုက္ရင္ code က ပိုသပ္ရပ္သြားမွာပါ။
https://mega.nz/…
#!/bin/bash
function F1 {
for (( ; ; ))
do
F1
done
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 ဆိုၿပီး ေဖၚျပေပးဖို ့ပါ။
I am single
I like bash programming
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(6-5-2019)
++ [ make directory by checking existence ] script-26
စလိုက္ရေအာင္ !
vi 26make_dir.sh ဆိုတဲ့ အမည္နဲ ့ file အသစ္ ဖြင့္လိုက္ပါ။ ၿပီးရင္ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။
#!/bin/bash
read dirname
if [ -d "$dirname" ]
then
echo "Directory exist"
else
`mkdir $dirname`
fi
https://mega.nz/…
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
echo "Enter directory name" ဒါကေတာ့Enter directory name ဆိုတဲ့ string စာသားကို ေဖၚျပ
တာပါ။
read dirname ဒါကေတာ့ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လက
ို ္တဲ့ input ကို dirname အမည္ရ
variable နဲ ့ ကိုယ္စားျပဳလိုက္တာပါ။
then
echo "Directory exist" ဒါကေတာ့ အမည္တုရွိလွ်င္ Directory exist ဆိုတဲ့ string စာသားနဲ ့ reply
ျပန္ဖို ့ပါ။
else
`mkdir $dirname` ဒါကေတာ့ အမည္တူ မရွိလွ်င္ directory ကို ဖန္တီးဖို ့ပါ။ ' … ' ကို သတိျပဳပါ။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(6-5-2019)
ကဲ ! စရေအာင္။
#!/bin/bash
read fname
if [ -f "$fname" ]
then
echo "file exist"
else
`touch $fname`
fi
https://mega.nz/…
ရွင္းရရင္ -->
#!/bin/bash ဆိုတာကေတာ့ အခု shell script ကို Bash shell သံုးၿပီး run မယ္လို ့ ေၾကျငာတာပါ။
echo "Enter file name" ဒါကေတာ့Enter file name ဆိုတဲ့ string စာသားကို ေဖၚျပတာပါ။
read fname ဒါကေတာ့ input တစ္ခုကို ဖန္တီးၿပီး ထည့္လိုက္တဲ့ input ကို fname အမည္ရ
variable နဲ ့ ကိုယ္စားျပဳလိုက္တာပါ။
then
echo "File exist" ဒါကေတာ့ အမည္တုရွိလွ်င္ File exist ဆိုတဲ့ string စာသားနဲ ့ reply ျပန္ဖို ့ပါ။
else
`touch $fname` ဒါကေတာ့ အမည္တူ မရွိလွ်င္ file ကို ဖန္တီးဖို ့ပါ။ ' … ' ကို သတိျပဳပါ။
echo "File created successfully" ဒါကေတာ့ directory ကို ဖန္တီးၿပီးတဲ့ေနာက္ File created
successfully ဆိုတဲ့ စာသားကို reply ျပန္ဖို ့ပါ။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(6-5-2019)
++ [ read a file ] script-28 ++
ကဲ ! စရေအာင္။
#!/bin/bash
file="$filename"
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 ] ++
ကဲ ! စရေအာင္။
#!/bin/bash
cat readme
cat readme
run ၿပီးတဲ့အခါ result ကို photo မွာ ျပထားသလို ျမင္ရပါလိမ့္မယ္။ before နဲ ့ after အေျခအေနေ
တြကို ျမင္ရပါမယ္။
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 ကို
ျပသေပးမွာပါ။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(6-5-2019)
++ [ font style ] script-30 ++
ကဲ ! စရေအာင္။
#!/bin/bash
#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"
https://mega.nz/…
ရွင္းရရင္ -->
#!/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 အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(7-5-2019)
ကဲ ! စရေအာင္။
#!/bin/bash
string="Catch Me If You Can"
#31 is RED
echo -e "\e[31m$string\e[0m"
https://mega.nz/…
ရွင္းရရင္ -->
#!/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 နဲ ့ ျပန္
ပိတ္ေပးရပါတယ္။
က်န္တဲ့ font color ေတြ၊ background ေတြသည္လည္း အလားတူပါပဲေနာ္။ တြဲပါတဲ့ color table
ထဲက number ေလးေတြကို ေျပာင္းၿပီး စမ္းၾကည့္ေပါ့ေနာ္။
အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ font color အေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(7-5-2019)
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
#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
https://mega.nz/…
ရွင္းရရင္ -->
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(8-5-2019)
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
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
https://mega.nz/…
ရွင္းရရင္ -->
အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ relational operators ေတြအေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾ
ကတာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(8-5-2019)
အဲ့လိုေပါ့ေနာ္။
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
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
https://mega.nz/…
ရွင္းရရင္ -->
အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ logical operators ေတြအေၾကာင္း shell script ေလးကို ဒီမွာပဲ တခန္းရပ္ၾက
တာေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(8-5-2019)
++ [ yes or no ] script-35 ++
သူက ဘယ္လို အလုပ္လုပ္သလဲဆိုေတာ့၊ yes သို ့မဟုတ္ no ေမးခြန္း ေမးမယ္။ yes ဆိုရွင္ ႀကိဳတင္
သတ္မွတ္ထားတဲ့ command ကို run မယ္။ no ဆိုရင္ မ run ဘူး။ input မွားထည့္ရင္ မွားထည့္ေၾ
ကာင္း reply ျပန္မယ္။ အဲ့လိုပါ။
ကဲ ! စလိုက္ရေအာင္။
#!/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
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 အျဖစ္ ဖမ္းယူလိုက္
တာပါ။
[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 ဆိုတဲ့ စား
သားကို ျပခိုင္းလိုက္တာပါ။
အဲ့ေတာ့၊ က်ေနာ္တို ့ရဲ့ 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 ေတြ အေၾကာင္း ဆက္လက္ ေဖၚျပေပးသြားမွာ ျဖစ္ပါတယ္။
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(10-5-2019)
#!/bin/bash
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
ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(10-5-2019)
++ [ user information ] script-37 ++
#!/bin/bash
ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(11-5-2019)
++ [ backup the directory ] script-38 ++
#!/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
ၿပီးရင္ 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 ကို ႏွိပ္ပါ။ ၿပီးရင္ -->
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 ရဲ့ အသံုးဝင္ပံုေတြကို ေပါင္းစပ္ထားတာပါ။
#!/bin/bash
#####################################################
###########
#######################################
########################
DB_BACKUP_PATH='/backup_db/'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_USER='root'
MYSQL_PASSWORD='redhat'
DATABASE_NAME='exampledb'
#####################################################
############
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
sleep 5s
if [ $file_number -eq 30 ]
then
else
fi
ၿပီးရင္ run ၾကည့္ပါ။ result ကို photo မွာ ဥပမာ ျပထားသလို ျမင္ရပါမယ္။
စမ္းဖို ့ အတြက္ MySQL ကို install လုပ္ၿပီး database တစ္ခု ေဆာင္ထားဖို ့ေတာ့ လိုမယ္ေနာ္။
ဘယ္လို ေရးထားလည္း source code ကို ကိုယ္တိုင္ေလ့လာပါ။ တစ္ခု ေျပာစရာ ရွိတာက -->
ဒီ script က manual run ရမယ့္ script မဟုတ္ပါဘူး။ crontab နဲ ့ တြဲၿပီး daily backup အတြက္
သံုးရတဲ့ script ပါ။
terminal မွာ crontab -e လို ့ ရိုက္ enter ေခါက္ပါ။ crontab ပြင့္လာရင္ စာသားေတြ insert လုပ္ႏိုင္
ဖို ့ i ကို ႏွိပ္ပါ။ ၿပီးရင္ -->
ဒါဆို ေန ့စဥ္ နံနက္ ၁ နာရီ ထိုးတိုင္း MySQL Database ကို backup ျပဳလုပ္ေပးပါလိမ့္မယ္။
https://mega.nz/…
အားလံုး အဆင္ေျပပါေစ။
Yin Thu
(13-5-2019)