របៀបសរសេរ Bash WHILE Loops

ពាក្យបញ្ជាវាក្យសម្ពន្ធនិងឧទាហរណ៍

អ្នកអាចប្រតិបត្តិលំដាប់នៃពាក្យបញ្ជាដោយសរសេរពួកវាទៅក្នុងឯកសារស្គ្រីបហើយបន្ទាប់មករត់វា។

ឯកសារស្គ្រីបគឺគ្រាន់តែជាឯកសារអត្ថបទមួយជាទូទៅមានផ្នែកបន្ថែមឯកសារ .SH ដែលមានលំដាប់សេចក្តីណែនាំដែលអាចត្រូវបានប្រតិបត្តិពីបន្ទាត់ពាក្យបញ្ជា ( សែល ) ផងដែរ។

ខណៈពេលដែលឧទាហរណ៏រង្វិលជុំ

ខាងក្រោមនេះជាឧទាហរណ៍នៃរង្វិលជុំខណៈពេល។ នៅពេលដែលប្រតិបត្តិឯកសារស្គ្រីបនេះនឹងបោះពុម្ពលេខ 1 ដល់ 9 នៅលើអេក្រង់។ សេចក្តីថ្លែងការណ៍ខណៈពេលដែលផ្តល់ជូនអ្នកនូវភាពបត់បែនបន្ថែមទៀតសម្រាប់ការបញ្ជាក់លក្ខខណ្ឌបញ្ចប់ជាង loop សម្រាប់

#! / bin / bash count = 1 ខណៈពេល [$ count -le 9] ធ្វើសម្លេង echo "count count" 1 ((រាប់ ++)) បានបញ្ចប់

ឧទាហរណ៍អ្នកអាចបង្កើតស្គ្រីបមុនជារង្វិលជុំមិនកំណត់ដោយលុបសេចក្តីថ្លែងការណ៍បង្កើន "((រាប់ ++))":

#! / bin / bash count = 1 ខណៈពេល [$ count -le 9] ធ្វើសកម្មភាព echo "count count" sleep 1 done

សេចក្តីថ្លែងការណ៍ "ដេក 1" ផ្អាកការប្រតិបត្តិរយៈពេល 1 វិនាទីលើការនិយាយឡើងវិញ។ ប្រើផ្លូវកាត់ ក្តារចុច Ctrl + C ដើម្បីបញ្ចប់ដំណើរការ។

អ្នកក៏អាចបង្កើតរង្វិលជុំដ៏គ្មានទីបញ្ចប់ដោយដាក់សញ្ញាថាជាលក្ខខណ្ឌ:

#! / bin / bash count = 1 while: ធ្វើ echo "count count" 1 ((រាប់ ++))

ដើម្បីប្រើលក្ខខណ្ឌច្រើនក្នុងពេលរង្វិលជុំអ្នកត្រូវប្រើសញ្ញាតង្កៀបជ្រុងទ្វេ:

count = 1 done = 0 ខណៈពេល [[$ count -le 9] && [$ done == 0]] ធ្វើឱ្យ echo "count count" 1 ((count ++)) បើ [$ count == 5]; បន្ទាប់មក $ done = 1 fi បានបញ្ចប់

ក្នុងស្គ្រីបនេះអថេរ "ធ្វើ" ត្រូវបានចាប់ផ្ដើមជា 0 ហើយបន្ទាប់មកកំណត់ទៅ 1 នៅពេលចំនួនរាប់ដល់ 5 ។ លក្ខខណ្ឌរង្វិលនិយាយថារង្វិលជុំពេលនឹងបន្តដរាបណា "ចំនួន" តូចជាង 9 ហើយ "ធ្វើ" ស្មើ ទៅសូន្យ។ ដូច្នេះ loops ចេញនៅពេលដែលចំនួនរាប់ស្មើ 5 ។

"&&" មានន័យថាឡូជីខល "និង" និង "||" មានន័យថាឡូជីខល "ឬ" ។

ការកំណត់សំគាល់សម្រាប់ការភ្ជាប់គ្នា "និង" និង "ឬ" ក្នុងលក្ខខណ្ឌគឺ "-a" និង "-o" ជាមួយតង្កៀបជ្រុងតែមួយ។ លក្ខខណ្ឌខាងលើ:

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

... អាចត្រូវបានសរសេរឡើងវិញថា:

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

ការអានឯកសារអត្ថបទមួយត្រូវបានធ្វើជាធម្មតាជាមួយរង្វិលជុំខណៈពេល។ ក្នុងឧទាហរណ៍ខាងក្រោមស្គ្រីប bash អានបន្ទាត់មាតិកាតាមបន្ទាត់នៃឯកសារដែលហៅថា "inventory.txt:"

FILE = inventory.txt exec 6

បន្ទាត់ទីមួយផ្តល់ឈ្មោះឯកសារបញ្ចូលទៅអថេរ "FILE" ។ បន្ទាត់ទីពីររក្សាទុក "ការបញ្ចូលស្តង់ដារ" ក្នុងកម្មវិធីពិពណ៌នាឯកសារ "6" (វាអាចមានតម្លៃចន្លោះ 3 និង 9) ។ នេះត្រូវបានធ្វើដូច្នេះ "ការបញ្ចូលស្តង់ដារ" អាចត្រូវបានស្ដារឡើងវិញទៅជាកម្មវិធីពិពណ៌នា "0" នៅចុងបញ្ចប់នៃស្គ្រីប (សូមមើលសេចក្តីថ្លែងការណ៍ "exec 0 នៅក្នុងបន្ទាត់ទី 3 ឯកសារបញ្ចូលត្រូវបានផ្ដល់ទៅកម្មវិធីពិពណ៌នាឯកសារ" 0 "ដែលត្រូវបានប្រើ។ សម្រាប់ការបញ្ចូលស្តង់ដារ "អាន" សេចក្តីថ្លែងការណ៍បន្ទាប់អានបន្ទាត់ពីឯកសារនៅលើការដាស់តឿននីមួយៗហើយផ្តល់វាទៅអថេរ "line1" ។

ក្នុងគោលបំណងដើម្បីចេញជាមុនមួយរង្វិលជុំអ្នកអាចប្រើសេចក្តីថ្លែងការណ៍បំបែកដូចនេះ:

count = 1 done = 0 ខណៈពេល [$ count -le 9] ធ្វើសកម្មភាព echo "count count" 1 ((រាប់ ++)) បើ [$ count == 5] បន្ទាប់មកបំបែកអេកូបានបញ្ចប់

សេចក្តីថ្លែងការណ៍សម្រាករំលងការប្រតិបត្តិកម្មវិធីទៅទីបញ្ចប់ខណៈពេលដែលរង្វិលជុំនិងប្រតិបត្តិសេចក្តីថ្លែងការណ៍ណាមួយតាមវា។ ក្នុងករណីនេះឃ្លា "អេកូបានបញ្ចប់" ។

សេចក្តីថ្លែងការបន្តផ្ទុយទៅវិញរំលងសេចក្តីថ្លែងការណ៍នៃរង្វង់ដែលនៅសល់នៃការនិយាយបច្ចុប្បន្នហើយលោតដោយផ្ទាល់ទៅការតំឡើងបន្តបន្ទាប់ទៀត:

count = 1 done = 0 ខណៈពេល [$ count -le 9] ដេក 1 ((រាប់ ++)) បើ [$ count == 5] បន្ទាប់មកបន្តពិនិត្យឡើងវិញ "count count"

ក្នុងករណីនេះឃ្លា "បន្ត" ត្រូវបានប្រតិបត្តិនៅពេលអថេរ "count" ទៅដល់ 5 ។ នេះមានន័យថាសេចក្តីថ្លែងការណ៍ជាបន្តបន្ទាប់ (echo "count count") មិនត្រូវបានប្រតិបត្តិលើការធ្វើដដែលនេះទេ (នៅពេលតម្លៃនៃ "រាប់" គឺ 5) ។