Bash ස්ක්‍රිප්ට්: ආරම්භය

Bash ස්ක්‍රිප්ට්: ආරම්භය
Bash Scripts 2 කොටස: Loops
Bash Scripts, 3 කොටස: Command Line විකල්ප සහ ස්විච
Bash Scripts 4 කොටස: ආදානය සහ ප්‍රතිදානය
Bash Scripts, 5 කොටස: සංඥා, පසුබිම් කාර්යයන්, ස්ක්‍රිප්ට් කළමනාකරණය
Bash Scripts, 6 කොටස: කාර්යයන් සහ පුස්තකාල සංවර්ධනය
Bash Scripts, 7 කොටස: sed සහ Word Processing
Bash scripts, 8 කොටස: awk දත්ත සැකසුම් භාෂාව
Bash Scripts 9 කොටස: නිත්‍ය ප්‍රකාශන
Bash Scripts 10 කොටස: ප්‍රායෝගික උදාහරණ
Bash ස්ක්‍රිප්ට්, 11 කොටස: අන්තර්ක්‍රියාකාරී උපයෝගිතා අපේක්ෂා කිරීම සහ ස්වයංක්‍රීය කිරීම

අද අපි bash scripts ගැන කතා කරමු. මෙය - විධාන රේඛා ස්ක්‍රිප්ට්, bash shell සඳහා ලියා ඇත. zsh, tcsh, ksh වැනි වෙනත් shells ඇත, නමුත් අපි bash වෙත අවධානය යොමු කරමු. මෙම ද්රව්යය සෑම කෙනෙකුටම අදහස් කෙරේ, එකම කොන්දේසිය වන්නේ වැඩ කිරීමේ හැකියාවයි විධාන රේඛාව ලිනක්ස්.

Bash ස්ක්‍රිප්ට්: ආරම්භය

විධාන රේඛා ස්ක්‍රිප්ට් යනු යතුරුපුවරුවෙන් ඇතුළත් කළ හැකි, ගොනුවලට එකතු කර යම් පොදු අරමුණකින් ඒකාබද්ධ කළ හැකි එකම විධානවල එකතුවකි. මෙම අවස්ථාවෙහිදී, කණ්ඩායම්වල කාර්යයේ ප්රතිඵල ස්වාධීන වටිනාකමක් හෝ වෙනත් කණ්ඩායම් සඳහා ආදාන දත්ත ලෙස සේවය කළ හැකිය. ස්ක්‍රිප්ට් යනු නිතර සිදුකරන ක්‍රියා ස්වයංක්‍රීය කිරීමට ප්‍රබල ක්‍රමයකි.

Bash ස්ක්‍රිප්ට්: ආරම්භය

එබැවින්, අපි විධාන රේඛාව ගැන කතා කරන්නේ නම්, එය ඔබට අර්ධ කොමාවකින් වෙන් කර ඇති විධාන කිහිපයක් එකවර ක්‍රියාත්මක කිරීමට ඉඩ සලසයි:

pwd ; whoami

ඇත්ත වශයෙන්ම, ඔබ මෙය ඔබගේ ටර්මිනලයේ උත්සාහ කළේ නම්, විධාන දෙකක් ඇතුළත් ඔබේ පළමු bash පිටපත දැනටමත් ලියා ඇත. ඒක වැඩ කරන්නේ මෙහෙමයි. පළමුව කණ්ඩායම pwd වත්මන් වැඩ කරන බහලුම පිළිබඳ තොරතුරු පෙන්වයි, පසුව විධානය whoamiඔබ ලෙස ලොග් වී ඇති පරිශීලකයා පිළිබඳ තොරතුරු පෙන්වයි.

මෙම ප්‍රවේශය භාවිතා කරමින්, ඔබට එක් පේළියක ඔබට කැමති තරම් විධාන ඒකාබද්ධ කළ හැකිය, එකම සීමාව වන්නේ වැඩසටහනට ලබා දිය හැකි උපරිම තර්ක ගණනයි. පහත දැක්වෙන විධානය භාවිතයෙන් ඔබට මෙම සීමාව නිර්වචනය කළ හැකිය:

getconf ARG_MAX

විධාන රේඛාව විශිෂ්ට මෙවලමකි, නමුත් ඔබට අවශ්‍ය සෑම අවස්ථාවකම එයට විධාන ඇතුළත් කළ යුතුය. අපි විධාන මාලාවක් ගොනුවකට ලියා ඒවා ක්‍රියාත්මක කිරීම සඳහා එම ගොනුව හැඳින්වුවහොත් කුමක් කළ යුතුද? ඇත්ත වශයෙන්ම, අපි කතා කරන ගොනුව විධාන රේඛා ස්ක්‍රිප්ට් ලෙස හැඳින්වේ.

bash scripts ක්‍රියා කරන ආකාරය

විධානය භාවිතා කර හිස් ගොනුවක් සාදන්න touch. එහි පළමු පේළියේ අප භාවිතා කිරීමට යන්නේ කුමන කවචයද යන්න දැක්විය යුතුය. අපි උනන්දු වෙමු bash, එබැවින් ගොනුවේ පළමු පේළිය වනුයේ:

#!/bin/bash

මෙම ගොනුවේ ඇති අනෙකුත් රේඛා කවචය සකසන්නේ නැති අදහස් දැක්වීමට හැෂ් සංකේතය භාවිතා කරයි. කෙසේ වෙතත්, පළමු පේළිය විශේෂ අවස්ථාවකි, හෑෂ් එකක් පසුව විශ්මයාර්ථ ලකුණක් ඇත (මෙම අනුපිළිවෙල හැඳින්වේ shebang) සහ මාර්ගය bash, ස්ක්‍රිප්ට් එක විශේෂයෙන් නිර්මාණය කර ඇති බව පද්ධතියට දක්වන්න bash.

Shell විධාන රේඛා සංග්‍රහයකින් වෙන් කරනු ලැබේ, අදහස් හෑෂ් ලකුණකින් වෙන් කරනු ලැබේ. එය පෙනෙන්නේ මෙයයි:

#!/bin/bash
# This is a comment
pwd
whoami

මෙන්න, විධාන රේඛාවේ මෙන්, ඔබට එක් පේළියක විධාන ලිවිය හැකිය, අර්ධ කෝණ වලින් වෙන් කර ඇත. කෙසේ වෙතත්, ඔබ විවිධ රේඛා මත විධාන ලියන්නේ නම්, ගොනුව කියවීමට පහසු වේ. ඕනෑම අවස්ථාවක, කවචය ඒවා සකසනු ඇත.

ස්ක්‍රිප්ට් ගොනු අවසර සැකසීම

ගොනුවට නමක් දී එය සුරකින්න myscript, සහ bash පිටපත නිර්මාණය කිරීමේ කටයුතු බොහෝ දුරට අවසන්. දැන් ඉතිරිව ඇත්තේ මෙම ගොනුව ක්‍රියාත්මක කිරීම පමණි, එසේ නොමැතිනම්, ඔබ එය ක්‍රියාත්මක කිරීමට උත්සාහ කළහොත්, ඔබට දෝෂයක් ඇති වේ. Permission denied.

Bash ස්ක්‍රිප්ට්: ආරම්භය
වැරදි ලෙස වින්‍යාස කර ඇති අවසර සහිත ස්ක්‍රිප්ට් ගොනුවක් ධාවනය කිරීමට උත්සාහ කිරීම

අපි ගොනුව ක්‍රියාත්මක කළ හැකි බවට පත් කරමු:

chmod +x ./myscript

දැන් අපි එය ක්රියාත්මක කිරීමට උත්සාහ කරමු:

./myscript

අවසරයන් සැකසීමෙන් පසු සෑම දෙයක්ම කළ යුතු පරිදි ක්රියා කරයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
bash පිටපත සාර්ථකව ධාවනය වේ

පණිවිඩ ප්රතිදානය

ලිනක්ස් කොන්සෝලයට පෙළ ප්‍රතිදානය කිරීමට, විධානය භාවිතා කරන්න echo. අපි මෙම කරුණ පිළිබඳ දැනුම භාවිතා කර අපගේ ස්ක්‍රිප්ට් සංස්කරණය කරමු, දැනටමත් එහි ඇති විධාන මගින් ප්‍රතිදානය කරන දත්ත වලට පැහැදිලි කිරීම් එකතු කරමු:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

යාවත්කාලීන කරන ලද ස්ක්‍රිප්ට් ධාවනය කිරීමෙන් පසුව සිදු වන්නේ මෙයයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් එකකින් පණිවිඩ ප්‍රතිදානය කිරීම

දැන් අපට විධානය භාවිතයෙන් පැහැදිලි කිරීමේ සටහන් පෙන්විය හැක echo. ඔබ Linux මෙවලම් භාවිතයෙන් ගොනුවක් සංස්කරණය කරන්නේ කෙසේදැයි නොදන්නේ නම් හෝ ඔබ මීට පෙර විධානය දැක නොමැති නම් echo, පොඩ්ඩක් බලන්න මේ ද්රව්යය.

විචල්යයන් භාවිතා කිරීම

විචල්‍ය මඟින් ඔබට වෙනත් විධාන භාවිතා කිරීම සඳහා විධානවල ප්‍රතිඵල වැනි ස්ක්‍රිප්ට් ගොනුවක තොරතුරු ගබඩා කිරීමට ඉඩ සලසයි.

ඒවායේ ප්‍රතිඵල ගබඩා නොකර තනි විධාන ක්‍රියාත්මක කිරීමේ වරදක් නැත, නමුත් මෙම ප්‍රවේශය එහි හැකියාවන්ගෙන් තරමක් සීමිතය.

bash script වල භාවිතා කල හැකි විචල්‍ය වර්ග දෙකක් ඇත:

  • පාරිසරික විචල්යයන්
  • පරිශීලක විචල්යයන්

පාරිසරික විචල්යයන්

සමහර විට shell විධාන සමහර පද්ධති දත්ත සමඟ වැඩ කිරීමට අවශ්ය වේ. වත්මන් පරිශීලකයාගේ මුල් නාමාවලිය පෙන්වන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් මෙන්න:

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

අපට පද්ධති විචල්‍යයක් භාවිතා කළ හැකි බව කරුණාවෙන් සලකන්න $HOME ද්විත්ව උද්ධෘත වලදී, මෙය පද්ධතිය එය හඳුනා ගැනීමෙන් වළක්වන්නේ නැත. ඔබ ඉහත දර්ශනය ක්‍රියාත්මක කළහොත් ඔබට ලැබෙන්නේ මෙයයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් එකක පරිසර විචල්‍යයක් භාවිතා කිරීම

ඔබට තිරය මත ඩොලර් ලකුණක් පෙන්වීමට අවශ්‍ය නම් කුමක් කළ යුතුද? අපි මෙය උත්සාහ කරමු:

echo "I have $1 in my pocket"

පද්ධතිය උපුටා ගත් තන්තුවක ඩොලර් ලකුණක් හඳුනාගෙන අපි විචල්‍යයක් යොමු කර ඇති බව උපකල්පනය කරයි. ස්ක්‍රිප්ට් එක නිර්වචනය නොකළ විචල්‍යයක අගය පෙන්වීමට උත්සාහ කරයි $1. මෙය අපට අවශ්ය නොවේ. කුමක් කරන්න ද?

මෙම තත්වය තුළ, ඩොලර් ලකුණට පෙර පලා යන අක්ෂරය, පසුබෑමක් භාවිතා කිරීම උපකාරී වනු ඇත:

echo "I have $1 in my pocket"

ස්ක්‍රිප්ට් එක දැන් බලාපොරොත්තු වන දේ හරියටම ප්‍රතිදානය කරයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ඩොලර් ලකුණක් මුද්‍රණය කිරීමට ගැලවීමේ අනුපිළිවෙලක් භාවිතා කිරීම

පරිශීලක විචල්යයන්

පරිසර විචල්‍යයන්ට අමතරව, බාෂ් ස්ක්‍රිප්ට් මඟින් ඔබට ස්ක්‍රිප්ට් තුළ ඔබේම විචල්‍යයන් අර්ථ දැක්වීමට සහ භාවිතා කිරීමට ඉඩ ලබා දේ. ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම අවසන් වන තුරු එවැනි විචල්‍යයන් අගයක් දරයි.

පද්ධති විචල්‍යයන් මෙන්ම, ඩොලර් ලකුණ භාවිතයෙන් පරිශීලක විචල්‍යයන් වෙත ප්‍රවේශ විය හැක:
TNW-CUS-FMP - අපගේ සේවාවන් සඳහා 10% ක වට්ටමක් සඳහා ප්‍රවර්ධන කේතය, දින 7 ක් ඇතුළත සක්‍රිය කිරීමට ලබා ගත හැකිය

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

එවැනි පිටපතක් ධාවනය කිරීමෙන් පසුව සිදු වන්නේ මෙයයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
Script එකක Custom Variables

විධාන ආදේශනය

bash ස්ක්‍රිප්ට් වල ඇති වඩාත් ප්‍රයෝජනවත් අංගයක් වන්නේ විධාන ප්‍රතිදානයෙන් තොරතුරු උකහා ගෙන එය විචල්‍යයන් වෙත පැවරීමේ හැකියාවයි, ඔබට මෙම තොරතුරු script ගොනුවේ ඕනෑම තැනක භාවිතා කිරීමට ඉඩ සලසයි.

මෙය කිරීමට ක්රම දෙකක් තිබේ.

  • පසුපසට "`" භාවිතා කිරීම
  • නිර්මාණය විසින් $()

පළමු ප්‍රවේශය භාවිතා කරන විට, බැක්ටික් එක වෙනුවට තනි උද්ධෘත ලකුණක් ඇතුළත් නොකිරීමට වගබලා ගන්න. විධානය එවැනි අයිකන දෙකකින් අමුණා තිබිය යුතුය:

mydir=`pwd`

දෙවන ප්‍රවේශයේ දී, එකම දේ මෙසේ ලියා ඇත:

mydir=$(pwd)

සහ තිර රචනය මේ ආකාරයෙන් අවසන් විය හැකිය:

#!/bin/bash
mydir=$(pwd)
echo $mydir

එහි ක්රියාකාරිත්වය අතරතුර, විධානයේ ප්රතිදානය pwdvariable එකකින් save වෙයි mydir, එහි අන්තර්ගතය, විධානය භාවිතා කිරීම echo, කොන්සෝලය වෙත යනු ඇත.

Bash ස්ක්‍රිප්ට්: ආරම්භය
විධානයක ප්‍රතිඵල විචල්‍යයක සුරකින ස්ක්‍රිප්ට් එකක්

ගණිතමය මෙහෙයුම්

ස්ක්‍රිප්ට් ගොනුවක ගණිතමය මෙහෙයුම් සිදු කිරීම සඳහා, ඔබට වැනි ඉදිකිරීම් භාවිතා කළ හැක $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් එකක ගණිතමය මෙහෙයුම්

if-එවිට පාලන ගොඩනැගීම

සමහර අවස්ථා වලදී, ඔබට විධාන ක්රියාත්මක කිරීමේ ප්රවාහය පාලනය කිරීමට අවශ්ය වේ. උදාහරණයක් ලෙස, යම් අගයක් පහකට වඩා වැඩි නම්, ඔබ එක් ක්රියාවක් සිදු කළ යුතුය, එසේ නොමැති නම්, තවත්. මෙය බොහෝ අවස්ථාවන්හිදී අදාළ වන අතර, මෙහි පාලන ව්යුහය අපට උපකාර කරනු ඇත if-then. එහි සරලම ස්වරූපයෙන් එය මේ ආකාරයෙන් පෙනේ:

if команда
then
команды
fi

මෙන්න වැඩ කරන උදාහරණයක්:

#!/bin/bash
if pwd
then
echo "It works"
fi

මෙම අවස්ථාවේදී, විධානය ක්රියාත්මක වන්නේ නම් pwdසාර්ථකව සම්පූර්ණ වනු ඇත, "එය ක්රියා කරයි" යන පාඨය කොන්සෝලය තුළ දර්ශනය වනු ඇත.

අපිට තියෙන දැනුම පාවිච්චි කරලා සංකීර්ණ පිටපතක් ලියමු. අපි කියමු අපි යම් පරිශීලකයෙකු සොයා ගැනීමට අවශ්ය බව /etc/passwd, සහ ඔබ එය සොයා ගැනීමට සමත් වූවා නම්, එය පවතින බව වාර්තා කරන්න.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

මේ ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කළාට පස්සේ වෙන්නේ මේකයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
පරිශීලක සෙවීම

මෙහිදී අපි විධානය භාවිතා කළෙමු grepගොනුවක පරිශීලකයෙකු සෙවීමට /etc/passwd. කණ්ඩායම නම් grepඔබට නුහුරු, එහි විස්තරය සොයා ගත හැක මෙහි.

මෙම උදාහරණයේදී, පරිශීලකයා හමු වුවහොත්, ස්ක්‍රිප්ටය අනුරූප පණිවිඩයක් පෙන්වයි. පරිශීලකයා සොයාගත නොහැකි නම් කුමක් කළ යුතුද? මෙම අවස්ථාවේදී, ස්ක්‍රිප්ට් අපට කිසිවක් නොකියා සරලව ක්‍රියාත්මක කිරීම සම්පූර්ණ කරයි. ඔහු මේ ගැනත් අපට කියනවාට අපි කැමතියි, ඒ නිසා අපි කේතය වැඩිදියුණු කරන්නෙමු.

if-then-else පාලන ගොඩනැගීම

සාර්ථක සෙවුමක සහ අසාර්ථකත්වයේ ප්‍රතිඵල දෙකම වාර්තා කිරීමට වැඩසටහනට හැකිවීම සඳහා, අපි ඉදිකිරීම් භාවිතා කරන්නෙමු if-then-else. එය ක්‍රියා කරන ආකාරය මෙන්න:

if команда
then
команды
else
команды
fi

පළමු විධානය බිංදුව ලබා දෙන්නේ නම්, එනම් එය සාර්ථකව ක්‍රියාත්මක වූ බව, කොන්දේසිය සත්‍ය වන අතර ක්‍රියාත්මක කිරීම ශාඛාව දිගේ සිදු නොවේ. else. එසේ නොමැති නම්, බිංදුව හැර වෙනත් යමක් ආපසු ලබා දෙන්නේ නම්, එය අසාර්ථක වීම හෝ වැරදි ප්‍රතිඵලයක් පෙන්නුම් කරයි, පසුව විධාන else.

අපි පහත පිටපත ලියන්නෙමු:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

ඔහුගේ මරණ දණ්ඩනය කාණුවට බැස ගියේය else.

Bash ස්ක්‍රිප්ට්: ආරම්භය
if-then-else construct සමඟ ස්ක්‍රිප්ට් ධාවනය කිරීම

හොඳයි, අපි ඉදිරියට යමු සහ වඩාත් සංකීර්ණ තත්වයන් ගැන අපගෙන්ම විමසමු. ඔබට එක් කොන්දේසියක් නොව කිහිපයක් පරීක්ෂා කිරීමට අවශ්‍ය නම් කුමක් කළ යුතුද? උදාහරණයක් ලෙස, අපේක්ෂිත පරිශීලකයා සොයාගතහොත්, එක් පණිවිඩයක් පෙන්විය යුතුය, වෙනත් කොන්දේසියක් සපුරා ඇත්නම්, තවත් පණිවිඩයක් පෙන්විය යුතුය, සහ යනාදිය. එවැනි තත්වයක් තුළ, කැදලි තත්වයන් අපට උපකාර වනු ඇත. එය මෙසේ පෙනේ:

if команда1
then
команды
elif команда2
then
команды
fi

පළමු විධානය බිංදුව ලබා දෙන්නේ නම්, එය සාර්ථක ක්‍රියාත්මක වීම පෙන්නුම් කරයි නම්, පළමු කොටසේ ඇති විධානයන් ක්‍රියාත්මක වේ. then, එසේ නොමැති නම්, පළමු කොන්දේසිය අසත්‍ය නම් සහ දෙවන විධානය බිංදුව ලබා දෙන්නේ නම්, දෙවන කේතය ක්‍රියාත්මක වේ.

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

එවැනි ස්ක්‍රිප්ට් එකක, ඔබට උදාහරණයක් ලෙස, විධානය භාවිතයෙන් නව පරිශීලකයෙකු සෑදිය හැකිය useradd, සෙවුමෙන් ප්‍රතිඵල නොලැබුනේ නම් හෝ වෙනත් ප්‍රයෝජනවත් දෙයක් කරන්න.

සංඛ්යා සංසන්දනය

ස්ක්‍රිප්ට් වල ඔබට සංඛ්‍යාත්මක අගයන් සැසඳිය හැක. පහත දැක්වෙන්නේ අදාළ විධාන ලැයිස්තුවකි.

n1 -eq n2සත්‍ය නම් ආපසු ලබා දෙයි n1 සමානයි n2.
n1 -ge n2 සත්‍ය නම් ආපසු ලබා දෙයි n1වැඩි හෝ සමාන n2.
n1 -gt n2සත්‍ය නම් ආපසු ලබා දෙයි n1 වඩා වැඩි ය n2.
n1 -le n2සත්‍ය නම් ආපසු ලබා දෙයි n1අඩු හෝ සමාන n2.
n1 -lt n2n1 ට වඩා අඩු නම් සත්‍ය ලබා දෙයි n2.
n1 -ne n2සත්‍ය නම් ආපසු ලබා දෙයි n1සමාන නොවේ n2.

උදාහරණයක් ලෙස, අපි සංසන්දන ක්රියාකරුවන්ගෙන් එකක් උත්සාහ කරමු. ප්‍රකාශනය හතරැස් වරහන් තුළ කොටා ඇති බව සලකන්න.

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

මෙම විධානය ප්‍රතිදානය කරන්නේ මෙයයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් වල සංඛ්‍යා සංසන්දනය කිරීම

විචල්ය අගය val15 ට වඩා වැඩි, ශාඛාව ක්රියාත්මක කිරීම අවසන් වේ thenසැසඳීමේ ක්‍රියාකරු සහ ඊට අනුරූප පණිවිඩයක් කොන්සෝලය තුළ දර්ශනය වේ.

තන්තු සංසන්දනය

ස්ක්‍රිප්ට් වලට තන්තු අගයන් සැසඳිය හැක. සංසන්දන ක්‍රියාකරුවන් ඉතා සරල ලෙස පෙනේ, නමුත් තන්තු සංසන්දනය කිරීමේ මෙහෙයුම් වලට යම් යම් විශේෂාංග ඇත, ඒවා අපි පහතින් ස්පර්ශ කරන්නෙමු. මෙන්න ක්රියාකරුවන්ගේ ලැයිස්තුවක්.

str1 = str2 සමානාත්මතාවය සඳහා තන්තු පරීක්‍ෂා කරයි, නූල් එක සමාන නම් සත්‍ය බවට ආපසු පැමිණේ.
str1 != str2තන්තු සමාන නොවේ නම් සත්‍ය වේ.
str1 < str2සත්‍ය නම් ආපසු ලබා දෙයි str1අඩු str2.
str1 > str2 සත්‍ය නම් ආපසු ලබා දෙයි str1වඩා str2.
-n str1 දිග නම් සත්‍ය වේ str1බිංදුවට ඉහළින්.
-z str1දිග නම් සත්‍ය වේ str1ශුන්යයට සමාන වේ.

ස්ක්‍රිප්ට් එකක තන්තු සංසන්දනය කිරීමේ උදාහරණයක් මෙන්න:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලයක් ලෙස අපට පහත දේ ලැබේ.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් වල නූල් සංසන්දනය කිරීම

මෙහි සඳහන් කළ යුතු නූල් සංසන්දනයේ එක් අංගයක් තිබේ. එනම්, ">" සහ "<" ක්‍රියාකරුවන් backslash එකකින් ගැලවිය යුතුය, එසේ නොමැති නම්, දෝෂ පණිවිඩ නොපෙන්වන නමුත්, ස්ක්‍රිප්ට් නිවැරදිව ක්‍රියා නොකරනු ඇත. ස්ක්‍රිප්ට් ">" ලකුණ ප්‍රතිදාන යළි-යොමු කිරීමේ විධානයක් ලෙස අර්ථ දක්වයි.

කේතය තුළ මෙම ක්‍රියාකරුවන් සමඟ වැඩ කරන ආකාරය මෙන්න:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

පිටපතේ ප්‍රතිඵල මෙන්න.

Bash ස්ක්‍රිප්ට්: ආරම්භය
තන්තු සංසන්දනය, අනතුරු ඇඟවීම ලබා දී ඇත

ස්ක්‍රිප්ටය ක්‍රියාත්මක වුවද, අනතුරු ඇඟවීමක් නිකුත් කරන බව කරුණාවෙන් සලකන්න:

./myscript: line 5: [: too many arguments

මෙම අනතුරු ඇඟවීම ඉවත් කිරීම සඳහා, අපි නිගමනය කරමු $val2 ද්විත්ව උපුටා දැක්වීම් වලින්:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

දැන් සෑම දෙයක්ම කළ යුතු පරිදි ක්රියා කරයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
තන්තු සංසන්දනය

">" සහ "<" ක්‍රියාකරුවන්ගේ තවත් ලක්ෂණයක් වන්නේ ඔවුන් විශාල අකුරු සහ කුඩා අකුරු සමඟ ක්‍රියා කරන ආකාරයයි. මෙම විශේෂාංගය අවබෝධ කර ගැනීම සඳහා, පහත අන්තර්ගතය සහිත පෙළ ගොනුවක් සකස් කරමු:

Likegeeks
likegeeks

නමක් දීලා බේරගමු myfile, පසුව ටර්මිනලයේ පහත විධානය ක්‍රියාත්මක කරන්න:

sort myfile

එය ගොනුවේ ඇති රේඛා මෙලෙස වර්ග කරනු ඇත:

likegeeks
Likegeeks

කණ්ඩායම sort, පෙරනිමියෙන්, තන්තු ආරෝහණ අනුපිළිවෙලට වර්ග කරයි, එනම්, අපගේ උදාහරණයේ ඇති කුඩා අකුර ලොකු අකුරට වඩා කුඩා ය. දැන් අපි එකම නූල් සංසන්දනය කරන පිටපතක් සකස් කරමු:

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

ඔබ එය ධාවනය කරන්නේ නම්, සෑම දෙයක්ම අනෙක් අතට බව පෙනී යයි - කුඩා අකුර දැන් ලොකු අකුරට වඩා විශාලයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
ස්ක්‍රිප්ට් ගොනුවක වර්ග කිරීමේ විධානය සහ නූල් සංසන්දනය කිරීම

සංසන්දනාත්මක විධානවලදී, ලොකු අකුරු කුඩා අකුරු වලට වඩා කුඩා වේ. මෙහි තන්තු සංසන්දනය සිදු කරනු ලබන්නේ අක්ෂරවල ASCII කේත සංසන්දනය කිරීමෙනි, අනුපිළිවෙල අනුපිළිවෙල අනුව අක්ෂර කේත මත රඳා පවතී.

කණ්ඩායම sort, අනෙක් අතට, පද්ධති භාෂා සැකසුම් වල දක්වා ඇති අනුපිළිවෙල භාවිතා කරයි.

ගොනු චෙක්පත්

සමහර විට පහත විධාන බොහෝ විට bash script වල භාවිතා වේ. ගොනු සම්බන්ධයෙන් විවිධ කොන්දේසි පරීක්ෂා කිරීමට ඒවා ඔබට ඉඩ සලසයි. මෙන්න මෙම විධාන ලැයිස්තුවක්.

-d fileගොනුවක් තිබේද සහ නාමාවලියක් දැයි පරීක්ෂා කරයි.
-e fileගොනුව තිබේදැයි පරීක්ෂා කරයි.
-f file ගොනුවක් තිබේද සහ ගොනුවක්ද යන්න පරීක්ෂා කරයි.
-r fileගොනුව තිබේද සහ කියවිය හැකිද යන්න පරීක්ෂා කරයි.
-s file Пගොනුව තිබේද සහ හිස් නොවේද යන්න පරීක්ෂා කරයි.
-w fileගොනුව තිබේද සහ ලිවිය හැකිදැයි පරීක්ෂා කරයි.
-x fileගොනුව තිබේද සහ ක්‍රියාත්මක කළ හැකිද යන්න පරීක්ෂා කරයි.
file1 -nt file2 එය අලුත්ද යන්න පරීක්ෂා කරයි file1වඩා file2.
file1 -ot file2පැරණි නම් පරීක්ෂා කරයි file1වඩා file2.
-O file ගොනුව පවතින්නේද සහ වත්මන් පරිශීලකයා සතුද යන්න පරීක්ෂා කරයි.
-G fileගොනුව තිබේද යන්න සහ එහි කණ්ඩායම් හැඳුනුම්පත වත්මන් පරිශීලකයාගේ කණ්ඩායම් හැඳුනුම්පතට ගැලපේද යන්න පරීක්ෂා කරයි.

මෙම විධාන මෙන්ම අද සාකච්ඡා කරන තවත් බොහෝ දේ මතක තබා ගැනීම පහසුය. ඔවුන්ගේ නම්, විවිධ වචනවල කෙටි යෙදුම්, ඔවුන් සිදු කරන චෙක්පත් සෘජුවම දක්වයි.

අපි ප්‍රායෝගිකව විධාන වලින් එකක් උත්සාහ කරමු:

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

පවතින නාමාවලියක් සඳහා මෙම ස්ක්‍රිප්ට් එහි අන්තර්ගතය පෙන්වයි.

Bash ස්ක්‍රිප්ට්: ආරම්භය
නාමාවලියක අන්තර්ගතය ලැයිස්තුගත කිරීම

ඔබට ඉතිරි විධානයන් සමඟ අත්හදා බැලිය හැකි බව අපි විශ්වාස කරමු; ඒවා සියල්ලම එකම මූලධර්මය අනුව භාවිතා වේ.

ප්රතිඵල

අද අපි කතා කළේ බාෂ් ස්ක්‍රිප්ට් ලිවීම ආරම්භ කරන්නේ කෙසේද යන්න සහ මූලික කරුණු කිහිපයක් ආවරණය කිරීම ගැන ය. ඇත්ත වශයෙන්ම, bash වැඩසටහන්කරණයේ මාතෘකාව විශාලයි. මෙම ලිපිය ද්‍රව්‍ය 11 කින් යුත් විශාල මාලාවක පළමු කොටසේ පරිවර්තනයකි. ඔබට දැන් දිගටම කරගෙන යාමට අවශ්‍ය නම්, මෙන්න මෙම ද්‍රව්‍යවල මුල් ලැයිස්තුවකි. පහසුව සඳහා, ඔබ කියවා ඇති පරිවර්තනය මෙහි ඇතුළත් කර ඇත.

  1. Bash Script පියවරෙන් පියවර — මෙහිදී අපි කතා කරන්නේ bash scripts නිර්මාණය කිරීම ආරම්භ කරන්නේ කෙසේද යන්න ගැන, විචල්‍යයන් භාවිතා කිරීම සලකා බලනු ලැබේ, කොන්දේසි සහිත ව්‍යුහයන්, ගණනය කිරීම්, සංඛ්‍යා සංසන්දනය කිරීම, නූල් සහ ගොනු පිළිබඳ තොරතුරු සොයා ගැනීම විස්තර කෙරේ.
  2. Bash Scripting Part 2, Bash the awesome - මෙහි ලූප සඳහා සහ අතරතුර වැඩ කිරීමේ ලක්ෂණ අනාවරණය වේ.
  3. Bash Scripting කොටස 3, පරාමිති සහ විකල්ප — මෙම ද්‍රව්‍යය විධාන රේඛා පරාමිති සහ යතුරු සඳහා කැප කර ඇති අතර ඒවා ස්ක්‍රිප්ට් වෙත යැවිය හැකි, පරිශීලකයා ඇතුළු කරන දත්ත සමඟ ක්‍රියා කරන සහ ගොනු වලින් කියවිය හැකිය.
  4. Bash Scripting කොටස 4, Input & Output - මෙන්න අපි කතා කරන්නේ ගොනු විස්තර කරන්නන් සහ ඒවා සමඟ වැඩ කිරීම, ආදානය, ප්‍රතිදානය, දෝෂ ප්‍රවාහ සහ ප්‍රතිදාන යළි-යොමුවීම් ගැන ය.
  5. Bash Scripting 5 කොටස, සිගල් සහ රැකියා — මෙම ද්‍රව්‍යය ලිනක්ස් සංඥා, ස්ක්‍රිප්ට් වල ඒවා සැකසීම සහ කාලසටහනකට අනුව ස්ක්‍රිප්ට් දියත් කිරීම සඳහා කැප කර ඇත.
  6. Bash Scripting කොටස 6, කාර්යයන් — මෙහිදී ඔබට ස්ක්‍රිප්ට් වල කාර්යයන් නිර්මාණය කිරීම සහ භාවිතා කිරීම සහ පුස්තකාල සංවර්ධනය කිරීම පිළිබඳව ඉගෙන ගත හැක.
  7. Bash Scripting කොටස 7, sed භාවිතා කිරීම — මෙම ලිපිය sed streaming text editor සමඟ වැඩ කිරීමට කැප කර ඇත.
  8. Bash Scripting කොටස 8, awk භාවිතා කරමින් — මෙම ද්‍රව්‍යය awk දත්ත සැකසුම් භාෂාවෙන් ක්‍රමලේඛනය සඳහා කැප කර ඇත.
  9. Bash Scripting කොටස 9, නිත්‍ය ප්‍රකාශන — මෙහිදී ඔබට bash scripts වල සාමාන්‍ය ප්‍රකාශන භාවිතා කිරීම ගැන කියවිය හැක.
  10. Bash Scripting 10 කොටස, ප්‍රායෝගික උදාහරණ — පරිශීලකයන් වෙත යැවිය හැකි පණිවිඩ සමඟ වැඩ කිරීමේ තාක්ෂණික ක්රම මෙන්ම තැටි නිරීක්ෂණය සඳහා ක්රමයක් ද මෙහි ඇත.
  11. Bash Scripting Part 11, Expect Command — මෙම ද්‍රව්‍යය ඔබට අන්තර්ක්‍රියාකාරී උපයෝගිතා සමඟ අන්තර්ක්‍රියා ස්වයංක්‍රීය කළ හැකි Expect මෙවලම සඳහා කැප කර ඇත. විශේෂයෙන්ම, අපි කතා කරන්නේ expect scripts සහ bash scripts සහ වෙනත් වැඩසටහන් සමඟ ඔවුන්ගේ අන්තර්ක්‍රියා ගැනයි.

මෙම ලිපි මාලාවේ ඇති එක් වටිනා අංගයක් නම්, සරලම, ඕනෑම තරාතිරමක පරිශීලකයින් සඳහා සුදුසු සිට, එය ක්‍රමයෙන් තරමක් බැරෑරුම් මාතෘකා වෙත යොමු කරන අතර, ලිනක්ස් විධාන රේඛා ස්ක්‍රිප්ට් නිර්මාණය කිරීමේදී සෑම කෙනෙකුටම ඉදිරියට යාමට අවස්ථාව ලබා දීමයි. .

හිතවත් පාඨකයින්! අපි බැෂ් ක්‍රමලේඛන ගුරුවරුන්ගෙන් ඉල්ලා සිටින්නේ ඔවුන් ඔවුන්ගේ ප්‍රවීණත්වයේ උච්චතම ස්ථානයට පැමිණි ආකාරය ගැන කතා කිරීමට, ඔවුන්ගේ රහස් බෙදා ගැනීමට සහ ඔවුන්ගේ පළමු පිටපත ලියා ඇති අයගෙන් හැඟීම් ලබා ගැනීමට අපි බලාපොරොත්තු වෙමු.

Bash ස්ක්‍රිප්ට්: ආරම්භය

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

මම ඉතිරි ලිපි මාලාව පරිවර්තනය කළ යුතුද?

  • ඔව්!

  • නෑ ඕන නෑ

පරිශීලකයින් 1030 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 106 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න