Bash ලියන්න WHILE-loops

විධානයන්, ස්මාරක සහ උදාහරණ

විධානාවලි ගොනුවක් ලිවීමෙන් අනතුරුව එය ක්රියාත්මක කිරීම මඟින් ඔබට විධානයන් අනුපිළිවෙලක් ක්රියාත්මක කළ හැකිය.

විධානාවලි ගොනුවක් හුදෙක් පෙළ ගොනුවක් වන අතර, සාමාන්යයෙන් .SH ගොනු දිගුව සමඟ, විධාන රේඛාවේ ( shell ) ක්රියාත්මක කළ හැකි උපදෙස් මාලාවකි.

ලූප නිදසුන්

පහත දැක්වෙන්නේ සීමිත කාලයක නිදසුනකි. ක්රියාත්මක කරන විට, මෙම විත්රක ගොනුව තිරය මත අංක 1 සිට 9 මුද්රණය කරනු ඇත. මෙම ප්රකාශයේ ප්රකාශය මඟින් ඔබට -ලූප් වලට වඩා අවසන් කිරීමේ කොන්දේසිය නිශ්චය කිරීම සඳහා වඩාත් නම්යශීලී වේ .

#! / bin / bash count = 1 අතර [$ count -le 9] echo "$ count" 1 ((count + count))

නිදසුනක් ලෙස, ඔබට පෙර ස්ක්රිප්ට අනන්ත රවුම් සැකසීම ප්රකාශ කිරීමේ අගය ප්රකාශ කිරීම ("count + count"):

#! / bin / bash count = 1 අතර [$ count -le 9] "echo" "echo" 1 echo echo

"නින්ද 1" ප්රකාශය එක් එක් පුනරුත්ථාපනය සඳහා තත්පර 1 ක ක්රියාත්මක කිරීම නවතා දමයි. ක්රියාවලිය අවසන් කිරීම සඳහා Ctrl + C යතුරු පුවරුවේ කෙටිමඟය භාවිතා කරන්න.

ඔබ ද සාමාන්ය තත්වයක් ලෙස චතුරස්රයක් තැබීමෙන් අනන්ත ලූපයක් සෑදිය හැකිය:

#! / bin / bash count = 1 while: "echo" "echo" 1 ((count + count)) සිදු කර ඇත

ද්විතීයික වරහන ආවරණ අංකනය භාවිතා කිරීමට ඔබ භාවිතා කළ යුතු අතර,

count = 1 done = 0 අතර [[$ count -le 9] && [$ done == 0]] echo "$ count" 1 ({count + count)) නම් [$ count == 5]; පසුව $ done = 1 fi done

මෙම ස්ක්රිප්ටයේ "සිදු කළ" විචල්යය 0 ට පසුව ආරම්භ කරන අතර පසුව ගණනය කරන විට අංක 1 ට වැඩි වේ. 5. ලුප්ස් කොන්දේසිය ප්රකාශ කරන විට, "ගූගල්" 9 ට වඩා අඩු වන අතර, "ලූප්" ශුන්ය වේ. එබැවින් ගණන් කිරීමේදී ලුප්ස් 5 ට සමාන වේ.

"&&" යනු තාර්කික "සහ" සහ "||" යනු තාර්කික "හෝ" යන්නයි.

"සහ" සහ "හෝ" සම්බන්ධතා සඳහා විකල්ප අංකනයක් වන්නේ "-a" සහ "-o" තනි කොටු වරහන් සමඟය. ඉහත කොන්දේසිය:

[[$ count -le 9] && [$ done == 0]]

... නැවත ලිවිය හැකිය:

[$ count -le 9] -a [$ done == 0]

පෙළ ගොනුව කියවීමේදී සාමාන්යයෙන් ලූපයක් සහිතව සිදු කෙරේ. පහත උදාහරණයේ දී, bash විධානාවලිය අන්තර්ගත පේළි කියවෙන්නේ "inventory.txt:

FILE = බඩු තොගයක්. Exec 6

පළමු පේළිය "FILE" විචල්යයට ආදාන ගොනු නාමය ලබාදේ. දෙවන පේළිය "6" ලෙසින් දක්වා ඇති "සම්මත ආදාන" (එය 3 හා 9 අතර ඕනෑම අගයක් විය හැක). මෙය සිදු කරනුයේ "සම්මත ආදාන" කේත රචනය අවසානයේ "0" යන කොටසේ පිටපත් කිරීමේදී "0" ලෙස නැවත සකසා ගත හැකි ය (වගුව බලන්න "exec 0 වන තෙවන පේළයේ ආදාන ගොනුව යොදනු ලැබේ. සම්මත ආදාන සඳහා "කියවීම" ප්රකාශය ඉන්පසු සෑම පිළිවෙළකටම ගොනුවේ සිට රේඛාව කියවනු ලබන අතර "line1" විචල්යය ලබා දෙයි.

මිනිත්තු කාල සීමාවක් කල් ඉකුත්වීමට, ඔබ වැනි විවේචන භාවිතා කළ හැකිය:

count = 1 done = 0 අතර [$ count -le 9] echo "$ count" නින්ද 1 ((count + count)) නම් [$ count == 5]

විවේක ප්රකාශය අවසානයේදී අවසානය දක්වා ක්රියාත්මක කරන අතර එය අනුගමනය කළ ඕනෑම ප්රකාශයක් ක්රියාත්මක කරයි. මෙම අවස්ථාවේ දී, "echo Finished" යන ප්රකාශය.

අඛන්ඩ ප්රකාශය, අනෙක් අතට, දැනට පවතින පුනරාවර්තන කාලයෙහි ලූප් ප්රකාශය ඉවතට හැරවීම පමණක් ඉතිරිව ඇති අතර ඉතිරි ප්රතිඵලය වෙත සෘජුව පනින්න:

count = 1 done = 0 අතර [$ count -le 9] sleep 1 ((count + count)) [$ count == 5] නම් "echo count"

මෙම අවස්ථාවෙහිදී, "දිගටම" ප්රකාශය සිදු කරනුයේ විචල්යයේ "count" යන්නයි. 5. මෙහි අර්ථය වන්නේ ඊලග ප්රකාශනය (echo "$ count") මෙම ප්රතිඵලය මත ක්රියාත්මක නොවේ ("count" යන්න 5 වන විට).