រៀនពីរបៀបរត់កូនសោដោយប្រើស្គ្រីបស្គ្រីប

របៀបណែនាំ Subshells ឱ្យរត់នៅក្នុងប៉ារ៉ាឡែលនៅក្នុងផ្ទៃខាងក្រោយ

សែលជាចំណុចប្រទាក់មូលដ្ឋានសម្រាប់បញ្ចូលពាក្យបញ្ជានៅលើប្រព័ន្ធលីនុច។ ជាមួយវាអ្នកអាចបញ្ចូលពាក្យបញ្ជាដោយផ្ទាល់ឬបញ្ជាក់ឯកសារ (ស្គ្រីប) ដែលមានលំដាប់នៃពាក្យបញ្ជាត្រូវបានប្រតិបត្តិ។ សែលត្រូវបានរៀបចំក្នុងឋានានុក្រមហើយសែលអាចបង្កើតសែលថ្មី។ សែលថ្មីត្រូវបានគេចាត់ទុកថាជាដំណើរការកូនក្មេងដែលជាសែលមេដែលបង្កើតវា។

តាមលំនាំដើម subshell មួយគឺពឹងផ្អែកលើមេគោរបស់ខ្លួននៅក្នុងន័យថាប្រសិនបើដំណើរការមាតាបិតាបញ្ចប់ដំណើរការ subshell ក៏បញ្ចប់ផងដែរ។ លទ្ធផលណាមួយត្រូវបានបញ្ជូនពី subhell ទៅសែលមេ។

របៀបបង្កើតកូនក្រមុំ

ក្នុងស្គ្រីបសែលអ្នកបង្កើតអក្សរតូចមួយដោយប្រើការកំណត់វង់ក្រចក:

#! / bin / bash អេកូ "មុនពេលចាប់ផ្តើម subshell" (count = 1 ខណៈពេល [$ count -le 99] ធ្វើសកម្មភាព echo "count count" 1 ((រាប់ ++)) ធ្វើរួច) អេកូ "បញ្ចប់"

ក្នុងឧទាហរណ៍ រង្វង់ខណៈពេលដែល ត្រូវបានរុំព័ទ្ធក្នុងវង់ក្រចកដែលបណ្តាលឱ្យវាត្រូវបានប្រតិបត្តិក្នុងសែលសំបករបស់សែលដែលឯកសារស្គ្រីបត្រូវបានប្រតិបត្តិ។

ដំណើរការកូនសោនៅផ្ទៃខាងក្រោយ

លុះត្រាតែអ្នកបញ្ជាក់ថាគ្រោង subshell ត្រូវបានប្រតិបត្តិក្នុងផ្ទៃខាងក្រោយសែលមេរង់ចាំរង់ចាំការបញ្ចប់គម្រោងមុននឹងបន្តជាមួយស្គ្រីបដែលនៅសល់។ ទោះយ៉ាងណាក៏ដោយប្រសិនបើអ្នកចង់ដំណើរការកូនសោនៅក្នុងប៉ារ៉ាឡែលអ្នកដំណើរការពួកវានៅក្នុងផ្ទៃខាងក្រោយដែលត្រូវបានសម្រេចដោយតួអក្សរអុហ្វសិតនិងកន្សោមបន្ទាប់ពីកន្សោមរង subshell ដូចបានបង្ហាញនៅទីនេះ:

#! / bin / bash អេកូ "មុនពេលចាប់ផ្តើម subshell" (count = 1 ខណៈពេល [$ count -le 99] ធ្វើសម្លេង echo "count count" 1 ((រាប់ ++)) រួចរាល់ហើយ) echo "Finished"

ដំណើរការកូនសោច្រើនក្នុងប៉ារ៉ាឡែល

ប្រសិនបើអ្នកបង្កើតកូនសោជាច្រើនជា ដំណើរការ ផ្ទៃខាងក្រោយអ្នកអាចដំណើរការភារកិច្ចស្របគ្នា។ ជាទូទៅប្រព័ន្ធប្រតិបត្តិការប្រើប្រព័ន្ធដំណើរដំណើរការឬស្នូលខុសៗគ្នាសម្រាប់ដំណើរការនីមួយៗនិងដំណើរការបន្តបន្ទាប់ដោយសន្មតថាយ៉ាងហោចណាស់ក៏មានប្រព័ន្ធដំណើរការឬស្នូលជាច្រើនដូចដែលមានដំណើរការ។ បើមិនដូច្នោះទេភារកិច្ចត្រូវបានចាត់ចែងឱ្យដំណើរការដូចគ្នាឬស្នូល។ ក្នុងករណីនោះខួរក្បាលឬស្នូលប្តូររវាងភារកិច្ចដែលបានកំណត់រហូតដល់កិច្ចការត្រូវបានបញ្ចប់។ ឧទាហរណ៍បន្ទាប់មានដំណើរការរងពីរ។ ទីមួយរាប់ពី 1 ដល់ 99 និងលេខ 2 ពី 1000 ទៅ 1099 ។

#! / bin / bash អេកូ "មុននឹងចាប់ផ្តើម subshell" (count = 1 ខណៈពេល [$ count -le 99] ធ្វើសម្លេង echo "count count" 1 ((រាប់ ++)) រួចរាល់ហើយ) (count = 1000 ខណៈពេល [$ count -le 1099] ធ្វើឱ្យ echo "count count" 1 ((count ++)) បានធ្វើ) & អេកូ "បញ្ចប់"

ប្រើសេចក្តីថ្លែងការណ៍ រង់ចាំ ប្រាប់ដំណើរការមេដើម្បីរង់ចាំដំណើរការអនុដំណើរការបញ្ចប់មុននឹងបន្តស្គ្រីបដែលនៅសល់:

#! / bin / bash អេកូ "មុននឹងចាប់ផ្តើម subshell" (count = 1 ខណៈពេល [$ count -le 99] ធ្វើសម្លេង echo "count count" 1 ((រាប់ ++)) រួចរាល់ហើយ) (count = 1000 ខណៈពេល [$ count -le 1099] ធ្វើការបញ្ចេញ echo "count count" 1 ((រាប់ ++)) ធ្វើរួច) & រង់ចាំអេកូ "បញ្ចប់"

ប្រើសម្រាប់កូនសោ

Subshells មានប្រយោជន៍នៅពេលដែលពាក្យបញ្ជាត្រូវបានប្រតិបត្តិនៅក្នុងបរិស្ថានឬថតជាក់លាក់។ ប្រសិនបើពាក្យបញ្ជានីមួយៗត្រូវបានប្រតិបត្តិនៅក្នុង subshell ខុសគ្នាវាមិនមានហានិភ័យដែលការកំណត់អថេរនឹងត្រូវបានលាយបញ្ចូលគ្នាទេ។ នៅពេលបញ្ចប់ការកំណត់និងថតបច្ចុប្បន្នមិនចាំបាច់ត្រូវបានស្តារឡើងវិញទេពីព្រោះបរិស្ថាននៃដំណើរការមេមិនត្រូវបានប៉ះពាល់ដោយអនុផលណាមួយរបស់វាទេ។

Subshells អាចត្រូវបានប្រើក្នុង និយមន័យអនុគមន៍ ដូច្នេះពួកគេអាចត្រូវបានប្រតិបត្តិច្រើនដងដោយមានប៉ារ៉ាម៉ែត្រផ្សេងគ្នា។