NAME
bash - GNU Bourne-Again SHell
SYNOPSIS
bash [ជម្រើស] [ឯកសារ]
DESCRIPTION
Bash គឺជាកម្មវិធីបកប្រែភាសាពាក្យបញ្ជាដែលមានសមត្ថភាពឆបគ្នាដែលប្រតិបត្តិពាក្យបញ្ជាអានពីការបញ្ចូលស្តង់ដារឬពីឯកសារមួយ។ Bash ក៏បានបញ្ចូលនូវលក្ខណៈពិសេសមានប្រយោជន៍ពី Korn និង C shells ( ksh និង csh ) ។
Bash ត្រូវបានបម្រុងទុកដើម្បីអនុវត្តការអនុលោមរបស់ IEEE POSIX Shell និងឧបករណ៍ជាក់លាក់ (IEEE ក្រុមការងារ 1003.2) ។
ជម្រើស
បន្ថែមទៅជម្រើសសែលតួអក្សរដែលបានចងក្រងក្នុងសេចក្ដីពិពណ៌នានៃពាក្យបញ្ជា builtin bash បកប្រែជម្រើសដូចខាងក្រោមនៅពេលវាត្រូវបានហៅ។
- c ខ្សែអក្សរ
ប្រសិនបើមានជម្រើស -c នោះពាក្យបញ្ជាត្រូវបានអានពី ខ្សែអក្សរ ។ ប្រសិនបើមានអាគុយម៉ង់បន្ទាប់ពី ខ្សែអក្សរ ពួកវាត្រូវបានកំណត់ទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមជាមួយ $ 0 ។
-i
ប្រសិនបើមានជម្រើស -i នោះសែលគឺ អន្តរសកម្ម ។
-l
ធ្វើឱ្យ bash សកម្មដូចជាវាត្រូវបានគេហៅថាជាសែលចូល (សូមមើល INVOCATION ខាងក្រោម) ។
-r
ប្រសិនបើមានជម្រើស -r មាន, សែលក្លាយជាបាន ដាក់កម្រិត (សូមមើល RESTRICTED SHELL ខាងក្រោម) ។
-s
ប្រសិនបើជម្រើស -s មានវត្តមានឬប្រសិនបើគ្មានអាគុយម៉ង់នៅសល់បន្ទាប់ពីដំណើរការជម្រើសនោះពាក្យបញ្ជាត្រូវបានអានពីការបញ្ចូលស្តង់ដារ។ ជម្រើសនេះអនុញ្ញាតឱ្យប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានកំណត់នៅពេលហៅសែលអន្តរសកម្ម។
-D
បញ្ជីនៃខ្សែអក្សរដែលបានដកស្រង់ទ្វេដងទាំងអស់ដែលបន្តដោយ $ ត្រូវបានបោះពុម្ពនៅលើ ouput ស្តង់ដារ។ ទាំងនេះគឺជាខ្សែដែលត្រូវមានការបកប្រែភាសានៅពេលដែលមូលដ្ឋានបច្ចុប្បន្នមិនមែន C ឬ POSIX ។ នេះមានន័យថាជម្រើស -n ; គ្មានពាក្យបញ្ជានឹងត្រូវបានប្រតិបត្តិ។
[- +] អូ [ ហាង shop_top ]
shopt_option គឺជាផ្នែកមួយនៃជម្រើសសែលដែលបានទទួលដោយ គ្រឿងបន្លាស់ shopt (សូមមើល SHELL BUILTIN COMMANDS ខាងក្រោម) ។ ប្រសិនបើមាន shopt_option , -O កំណត់តម្លៃនៃជម្រើសនោះ។ + O មិនកំណត់វា។ ប្រសិនបើមិនមាន storetopop ទេឈ្មោះនិងតម្លៃនៃជម្រើសសែលដែលបានទទួលដោយ shopt ត្រូវបានបោះពុម្ពលើលទ្ធផលស្តង់ដារ។ ប្រសិនបើជម្រើសការហៅគឺ + O លទ្ធផលត្រូវបានបង្ហាញក្នុងទ្រង់ទ្រាយដែលអាចត្រូវបានយកមកប្រើជាធាតុបញ្ចូល។
A - សញ្ញាចុងបញ្ចប់នៃជម្រើសនិងបិទដំណើរការជម្រើសបន្ថែមទៀត។ អាគុយម៉ង់ណាមួយបន្ទាប់ពី - ត្រូវបានចាត់ទុកជាឈ្មោះឯកសារនិងអាគុយម៉ង់។ អាគុយម៉ង់នៃ - គឺស្មើនឹង - ។
Bash ក៏បកប្រែផងដែរនូវជម្រើសច្រើនតួ។ ជម្រើសទាំងនេះត្រូវតែលេចឡើងនៅលើបន្ទាត់ពាក្យបញ្ជាមុនពេលទទួលស្គាល់ជម្រើសតួអក្សរមួយ។
- dump-po-strings
សមមូលទៅ -D ប៉ុន្តែលទ្ធផលគឺស្ថិតនៅក្នុង ទ្រង់ទ្រាយឯកសារ gettext po (វត្ថុចល័ត) របស់ GNU ។
- ខ្សែអក្សរឥតបានការ
សមមូលទៅ -D ។
- ជំនួយ
បង្ហាញសារប្រើប្រាស់មួយនៅលើលទ្ធផលស្តង់ដារហើយចេញដោយជោគជ័យ។
- ឯកសារឯកសារអ៊ីនធឺណេត
- file
ប្រតិបត្តិពាក្យបញ្ជាពី ឯកសារ ជំនួសឱ្យ ឯកសារ ចាប់ផ្ដើមផ្ទាល់ខ្លួនផ្ទាល់ខ្លួនស្តង់ដារ ~ / ។ Bashash ប្រសិនបើសែលគឺអន្តរកម្ម (សូមមើល INVOCATION ខាងក្រោម) ។
--ចូល
សមមូលនឹង -l ។
- គ្មានការរំខាន
កុំប្រើបណ្ណាល័យការ អានរបស់ GNU ដើម្បីអានបន្ទាត់ពាក្យបញ្ជានៅពេលសែលធ្វើអន្តរកម្ម។
- unoprofile
កុំអានឯកសារចាប់ផ្ដើមប្រព័ន្ធ / etc / profile ទាំងមូល ឬឯកសារចាប់ផ្ដើមផ្ទាល់ខ្លួនណាមួយទេ ~ / .bash_profile , ~ / .bash_login ឬ ~ / ។ profile ។ តាមលំនាំដើម bash អានឯកសារទាំងនេះនៅពេលវាត្រូវបានហៅជាសែលចូល (សូមមើល INVOCATION ខាងក្រោម) ។
- មិនអីទេ
កុំអាននិងប្រតិបត្តិឯកសារចាប់ផ្ដើមផ្ទាល់ខ្លួន ~ / ។ Bashash ប្រសិនបើសែលគឺអន្តរកម្ម។ ជម្រើសនេះបើកតាមលំនាំដើមប្រសិនបើសែលត្រូវបានហៅថាជា sh ។
- ពេជ្រ
ផ្លាស់ប្តូរឥរិយាបទរបស់ bash ដែលប្រតិបត្ដិការលំនាំដើមខុសពីស្តង់ដារ POSIX 1003.2 ដើម្បីផ្គូរផ្គងស្តង់ដារ ( posix mode ) ។
- មានកំហិត
សែលត្រូវបានដាក់កម្រិត (សូមមើល SHELL RESTRICTED ខាងក្រោម) ។
--rpm-required
បង្កើតបញ្ជីឯកសារដែលត្រូវការសម្រាប់ស្គ្រីបសែលដើម្បីដំណើរការ។ នេះមានន័យថា '-n' និងត្រូវមានដែនកំណត់ដូចគ្នានឹងការចងក្រងកំហុសពេលពិនិត្យមើលការត្រួតពិនិត្យ។ backticks, [], ការធ្វើតេស្ត, និងការផ្លាស់ប្តូរមិនត្រូវបានញែកដូច្នេះភាពអាស្រ័យមួយចំនួនអាចត្រូវបានខកខាន។ - verbose សមមូលទៅ -v ។
- កំណែ
បង្ហាញព័ត៌មានកំណែសម្រាប់ធាតុរបស់ bash នៅលើលទ្ធផលស្តង់ដារហើយចេញដោយជោគជ័យ។
ARGUMENTS
ប្រសិនបើអាគុយម៉ង់ស្ថិតនៅក្រោយដំណើរការជម្រើសហើយមិនមានជម្រើស -c និង -s ត្រូវបានផ្គត់ផ្គង់នោះអាគុយម៉ង់ដំបូងត្រូវបានសន្មតថាជាឈ្មោះឯកសារដែលមានពាក្យបញ្ជាសែល។ ប្រសិនបើ bash ត្រូវបានហៅក្នុងរបៀបនេះ $ 0 ត្រូវបានកំណត់ទៅជាឈ្មោះឯកសារហើយប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានកំណត់ទៅអាគុយម៉ង់ដែលនៅសល់។ Bash អាននិងប្រតិបត្តិពាក្យបញ្ជាពីឯកសារនេះបន្ទាប់មកចេញ។ ស្ថានភាពចេញរបស់ Bash គឺជាស្ថានភាពចេញរបស់ពាក្យបញ្ជាចុងក្រោយដែលប្រតិបត្តិក្នុងស្គ្រីប។ បើគ្មានពាក្យបញ្ជាត្រូវបានប្រតិបត្តិស្ថានភាពចេញគឺ 0 & # 160; ។ ការប៉ុនប៉ងធ្វើឡើងដំបូងដើម្បីបើកឯកសារក្នុងថតបច្ចុប្បន្នហើយប្រសិនបើគ្មានឯកសារត្រូវបានរកឃើញនោះសែលនឹងស្វែងរកថតនៅក្នុង PATH សម្រាប់ស្គ្រីប។
INVOCATION
សែលចូល គឺជាតួអក្សរដំបូងដែលអាគុយម៉ង់សូន្យគឺ - ឬមួយបានចាប់ផ្ដើមដោយជម្រើស --login ។
សែល អន្តរសកម្ម មួយគឺត្រូវបានចាប់ផ្ដើមដោយគ្មានអាគុយម៉ង់ដែលមិនមែនជាជម្រើសហើយគ្មានជម្រើស -c ដែលមានស្តង់ដារបញ្ចូលនិងទិន្នផលត្រូវបានតភ្ជាប់ទៅស្ថានីយ (ដូចដែលបានកំណត់ដោយ isatty (3)) ឬមួយបានចាប់ផ្ដើមដោយជម្រើស -i ។ PS1 ត្រូវបានកំណត់ហើយ $ - រួមបញ្ចូល i ប្រសិនបើ bash គឺអន្តរកម្មអនុញ្ញាតឱ្យសែលស្គ្រីបឬឯកសារចាប់ផ្ដើមដើម្បីសាកល្បងស្ថានភាពនេះ។
កថាខណ្ឌខាងក្រោមពណ៌នាអំពីរបៀបដែល bash ប្រតិបត្តិឯកសារចាប់ផ្ដើមរបស់វា។ ប្រសិនបើឯកសារណាមួយមានប៉ុន្តែមិនអាចអានបាន bash រាយការណ៍កំហុស។ Tildes ត្រូវបានពង្រីកនៅក្នុងឈ្មោះឯកសារដូចដែលបានពិពណ៌នាខាងក្រោមក្រោម ការពង្រីក Tilde នៅក្នុងផ្នែក EXPANSION ។
នៅពេលដែល bash ត្រូវបានហៅជាសែលចូលអន្តរសកម្មឬជាសែលមិន អង្កេតដែលមាន ជម្រើស --login វាដំបូងអាននិងប្រតិបត្តិពាក្យបញ្ជាពីឯកសារ / etc / profile ប្រសិនបើឯកសារនោះមាន។ បន្ទាប់ពីអានឯកសារនោះវាស្វែងរក ~ / .bash_profile ~ / .bash_login និង ~ / ។ profile នៅក្នុងលំដាប់នោះហើយអាននិងប្រតិបត្តិពាក្យបញ្ជាពីដំបូងដែលមានហើយអាចអានបាន។ ជម្រើស --noprofile អាចត្រូវបានប្រើនៅពេលសែលចាប់ផ្តើមដើម្បីទប់ស្កាត់ឥរិយាបថនេះ។
នៅពេលដែលសែលចូលត្រូវបាន bash អាននិងប្រតិបត្តិពាក្យបញ្ជាពីឯកសារ ~ / .bash_logout ប្រសិនបើវាមាន។
នៅពេលសែលអន្តរសកម្មដែលមិនមែនជាសែលចូលត្រូវបានចាប់ផ្ដើម bash អាននិងប្រតិបត្តិពាក្យបញ្ជាពី ~ / ។ Bashash ប្រសិនបើឯកសារនោះមាន។ វាអាចត្រូវបានរារាំងដោយប្រើជម្រើស --norc ។ ជម្រើស ឯកសារ --rcfile នឹងបង្ខំឱ្យអាននិងប្រតិបត្តិពាក្យបញ្ជាពី ឯកសារ ជំនួសឱ្យ ~ / .bashrc ។
នៅពេលដែល bash ត្រូវបានចាប់ផ្តើមមិនមានអន្តរសកម្មដើម្បីដំណើរការស្គ្រីបស្គ្រីបឧទាហរណ៍វារកមើលអថេរ BASH_ENV នៅក្នុងបរិស្ថានពង្រីកតម្លៃរបស់វាប្រសិនបើវាលេចឡើងនៅទីនោះហើយប្រើតម្លៃដែលបានពង្រីកជាឈ្មោះនៃឯកសារដើម្បីអាននិងប្រតិបត្តិ។ ។ Bash ធ្វើសកម្មភាពដូចជាពាក្យបញ្ជាខាងក្រោមត្រូវបានប្រតិបត្តិ:
ប្រសិនបើ [-n "$ BASH_ENV"]; បន្ទាប់មក។ "$ BASH_ENV"; fi
ប៉ុន្តែតម្លៃរបស់អថេរ PATH មិនត្រូវបានប្រើដើម្បីស្វែងរកឈ្មោះឯកសារទេ។
ប្រសិនបើ bash ត្រូវបានហៅដោយឈ្មោះ sh វាព្យាយាមធ្វើត្រាប់តាមឥរិយាបថចាប់ផ្ដើមនៃកំណែប្រវត្តិសាស្ត្រ sh ច្រើន បំផុតតាមដែលអាចធ្វើទៅបានស្របតាមស្តង់ដា POSIX ផងដែរ។ នៅពេលដែលត្រូវបានហៅជាសែលចូលអន្តរសកម្មឬសែលមិន អង្កេតដែលមាន ជម្រើស --login ដំបូងវានឹងអាននិងប្រតិបត្តិពាក្យបញ្ជាពី / etc / profile និង ~ / ។ profile នៅក្នុងលំដាប់នោះ។ ជម្រើស --noprofile អាចត្រូវបានប្រើដើម្បីរារាំងឥរិយាបថនេះ។ នៅពេលត្រូវបានហៅជាសែលអន្តរកម្មដែលមានឈ្មោះ shash bash រកមើលអថេរ ENV ពង្រីកតម្លៃរបស់វាបើវាត្រូវបានកំណត់ហើយប្រើតម្លៃពង្រីកជាឈ្មោះនៃឯកសារដើម្បីអាននិងប្រតិបត្តិ។ ចាប់តាំងពីសែលត្រូវបានគេហៅថាជា sh មិនប៉ុនប៉ងអាននិងប្រតិបត្តិពាក្យបញ្ជាពីឯកសារពេលចាប់ផ្ដើមផ្សេងទៀតជម្រើស --rcfile គ្មានប្រសិទ្ធិភាព។ សែលដែលមិនមានអន្តរកម្មត្រូវបានហៅដោយឈ្មោះ sh មិនព្យាយាមអានឯកសារចាប់ផ្ដើមផ្សេងទៀតណាមួយទេ។ នៅពេលត្រូវបានហៅជា sh , bash ចូលក្នុង posix mode បន្ទាប់ពីឯកសារត្រូវបានអាន។
ពេលដែល bash ត្រូវបានចាប់ផ្តើមក្នុងរបៀប posix ដូចនឹងជម្រើសបន្ទាត់ពាក្យបញ្ជា --posix វាដូចខាងក្រោមស្តង់ដារ POSIX សម្រាប់ឯកសារចាប់ផ្ដើម។ នៅក្នុងរបៀបនេះសែលអន្តរកម្មពង្រីកអថេរ ENV ហើយពាក្យបញ្ជាត្រូវបានអាននិងប្រតិបត្តិពីឯកសារដែលមានឈ្មោះជាតម្លៃពង្រីក។ មិនមានឯកសារពេលចាប់ផ្ដើមណាមួយត្រូវបានអានទេ។
Bash ប៉ុនប៉ងកំណត់នៅពេលវាកំពុងរត់ដោយដេមិនសែលពីចម្ងាយជាធម្មតា rshd ។ ប្រសិនបើ bash កំណត់វាត្រូវបានរត់ដោយ rshd វាអាននិងប្រតិបត្តិពាក្យបញ្ជាពី ~ / ។ Bashash ប្រសិនបើឯកសារនោះមានហើយអាចអានបាន។ វានឹងមិនធ្វើដូច្នេះទេប្រសិនបើត្រូវបានគេហៅថា sh ។ ជម្រើស --norc អាចត្រូវបានប្រើដើម្បីរារាំងឥរិយាបថនេះហើយជម្រើស --rcfile អាចត្រូវបានប្រើដើម្បីបង្ខំអានឯកសារផ្សេងទៀតប៉ុន្តែ rshd មិនបានហៅសែលជាមួយជម្រើសទាំងនោះឬអនុញ្ញាតឱ្យពួកវាត្រូវបានបញ្ជាក់។
ប្រសិនបើសែលត្រូវបានចាប់ផ្ដើមដោយលេខសម្គាល់អ្នកប្រើដែលមានប្រសិទ្ធិភាពមិនស្មើលេខសម្គាល់អ្នកប្រើពិតទេហើយជម្រើស -p មិនត្រូវបានផ្តល់ឱ្យនោះទេគ្មានឯកសារចាប់ផ្ដើមទេមុខងាររបស់សែលមិនត្រូវបានទទួលពីបរិស្ថាន SHELLOPTS អថេរប្រសិនបើវាលេចឡើងក្នុងបរិស្ថានត្រូវបានមិនអើពើហើយលេខសម្គាល់អ្នកប្រើដែលមានប្រសិទ្ធិភាពត្រូវបានកំណត់ទៅលេខសម្គាល់អ្នកប្រើពិត។ ប្រសិនបើជម្រើស -p ត្រូវបានផ្គត់ផ្គង់នៅការហៅឥរិយាបថពេលចាប់ផ្ដើមគឺដូចគ្នាប៉ុន្តែលេខសម្គាល់អ្នកប្រើដែលមានប្រសិទ្ធិភាពមិនត្រូវបានកំណត់ឡើងវិញទេ។
និយមន័យ
និយមន័យដូចតទៅនេះត្រូវបានប្រើនៅចន្លោះនៃឯកសារនេះ។
ទទេ
ចន្លោះឬផ្ទាំង។
ពាក្យ
លំដាប់នៃតួអក្សរត្រូវបានចាត់ទុកថាជាឯកតាតែមួយដោយសែល។ ត្រូវបានគេស្គាល់ផងដែរថាជា និមិត្តសញ្ញា ។
ឈ្មោះ
ពាក្យ ដែលមានតែតួអក្សរក្រមលេខនិងសញ្ញាគូសក្រោមនិងចាប់ផ្ដើមដោយតួអក្សរអក្សរសាស្ត្រឬសញ្ញាគូសក្រោម។ សំដៅផងដែរជាអ្នក កំណត់អត្តសញ្ញាណ ។
metacharacter
តួអក្សរមួយដែលនៅពេលដកស្រង់ចេញបំបែកពាក្យ។ មួយក្នុងចំណោមខាងក្រោម:
| & # 160; () <> ថេបថេប
ប្រតិបត្តិករត្រួតពិនិត្យ
និមិត្តសញ្ញា ដែលអនុវត្តមុខងារបញ្ជា។ វាគឺជានិមិត្តសញ្ញាដូចខាងក្រោម:
|| && ; () | <បន្ទាត់ថ្មី>
ពាក្យដែលរក្សាទុក
ពាក្យរក្សាទុក គឺជាពាក្យដែលមានអត្ថន័យពិសេសចំពោះសែល។ ពាក្យខាងក្រោមត្រូវបានទទួលស្គាល់ជាពាក្យសម្ងាត់ដែលត្រូវបានរក្សាទុកនៅពេលដែលមិនបានវាយតំលៃនិងពាក្យដំបូងនៃពាក្យបញ្ជាសាមញ្ញ (សូមមើល SHELL GRAMMAR ខាងក្រោម) ឬពាក្យទីបីនៃ សំណុំរឿង ឬពាក្យបញ្ជា:
! ករណីបានធ្វើរួច elac ផ្សេងទៀត esac ft សម្រាប់មុខងារប្រសិនបើក្នុងជម្រើសបន្ទាប់មករហូតដល់ {} ពេលវេលា [[]]
SHELL GRAMMAR
ពាក្យបញ្ជាសាមញ្ញ
ពាក្យបញ្ជាសាមញ្ញ គឺលំដាប់នៃអនុគមន៍អថេរស្រេចចិត្តបន្ទាប់ដោយពាក្យ ទទេ - បំបែកនិងការបញ្ជូនបន្តហើយត្រូវបានបញ្ចប់ដោយ សញ្ញាប្រមាណវិធីបញ្ជា ។ ពាក្យដំបូងបញ្ជាក់ពីពាក្យបញ្ជាដែលត្រូវប្រតិបត្តិហើយត្រូវបានហុចជាអាគុយម៉ង់សូន្យ។ ពាក្យដែលនៅសល់ត្រូវបានហុចជាអាគុយម៉ង់ទៅពាក្យបញ្ជាដែលគេហៅ។
តម្លៃត្រឡប់នៃ ពាក្យបញ្ជាសាមញ្ញ គឺជាស្ថានភាពចេញរបស់វាឬ 128+ n ប្រសិនបើពាក្យបញ្ជាត្រូវបានបញ្ចប់ដោយសញ្ញា n ។
បំពង់បង្ហូរទឹក
បំពង់បង្ហូរ គឺជាលំដាប់នៃពាក្យបញ្ជាមួយឬច្រើនដែលបំបែកដោយតួអក្សរ | ។ ទម្រង់សម្រាប់បំពង់បង្ហូរប្រេងមួយគឺ:
[ ពេលវេលា [ -p ]] [! ] [ | ពាក្យបញ្ជា 2 ... ]
លទ្ធផលស្តង់ដារនៃ ពាក្យបញ្ជា ត្រូវបានភ្ជាប់តាមបំពង់ទៅការបញ្ចូលស្តង់ដានៃ ពាក្យបញ្ជា 2 ។ ការតភ្ជាប់នេះត្រូវបានអនុវត្តមុនពេលប្តូរទិសដែលបានបញ្ជាក់ដោយពាក្យបញ្ជា (សូមមើល REDIRECTION ខាងក្រោម) ។
ប្រសិនបើពាក្យបម្រុង ! មុនបំពង់នាំចេញស្ថានភាពចេញរបស់បំពង់ដែលជាឡូជីខលនៃស្ថានភាពចេញនៃពាក្យបញ្ជាចុងក្រោយ។ បើមិនដូច្នោះទេស្ថានភាពនៃបំពង់បង្ហូរគឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយ។ សែលរង់ចាំពាក្យបញ្ជាទាំងអស់ក្នុងបំពង់បង្ហូរដើម្បីបញ្ចប់មុនពេលត្រឡប់តម្លៃ។
ប្រសិនបើ ពេលវេលា រក្សាទុកនៅពីមុខផ្លាកយែលដែលកន្លងមកក៏ដូចជាអ្នកប្រើនិងពេលវេលាប្រព័ន្ធដែលត្រូវបានប្រើប្រាស់ដោយការប្រតិបត្តិរបស់វាត្រូវបានរាយការណ៍នៅពេលចប់បំពង់បង្ហូរ។ ជម្រើស -p ផ្លាស់ប្តូរទ្រង់ទ្រាយលទ្ធផលទៅជាអ្វីដែលបានបញ្ជាក់ដោយ POSIX ។ អថេរ TIMEFORMAT អាចត្រូវបានកំណត់ជាខ្សែអក្សរទ្រង់ទ្រាយដែលបញ្ជាក់ពីរបៀបដែលព័ត៌មានអំពីពេលវេលាគួរតែត្រូវបានបង្ហាញ។ សូមមើលការពិពណ៌នានៃ TIMEFORMAT ក្រោម សែល អាំងតេក្រាល ខាងក្រោម។
ពាក្យបញ្ជានីមួយៗនៅក្នុងបំពង់បង្ហូរប្រេងមួយត្រូវបានប្រតិបត្តិជាដំណើរការដាច់ដោយឡែកមួយ (ឧ។ នៅក្នុង subshell មួយ) ។
បញ្ជី
បញ្ជី គឺលំដាប់នៃបំពង់មួយឬច្រើនដែលបំបែកដោយសញ្ញាប្រមាណវិធីមួយ ។ , & , ឬ || និងបានបញ្ចប់ដោយជម្រើសដោយមួយ ; , & , ឬ <បន្ទាត់ថ្មី> ។
សញ្ញាប្រមាណវិធីបញ្ជីទាំងនេះ និង && || មានអាទិភាពស្មើគ្នាបន្តដោយ ; និង S ដែលមានអាទិភាពស្មើៗគ្នា។
លំដាប់នៃបន្ទាត់ថ្មីមួយឬច្រើនអាចលេចឡើងនៅក្នុង បញ្ជី ជំនួសឱ្យសញ្ញាចំណុចក្បៀសដើម្បីកំណត់សញ្ញាបញ្ជា។
ប្រសិនបើពាក្យបញ្ជាត្រូវបានបញ្ចប់ដោយសញ្ញាប្រមាណវិធីបញ្ជាហើយសែលប្រតិបត្តិពាក្យបញ្ជានៅ ផ្ទៃខាងក្រោយ ក្នុងកូនសោមួយ។ សែលមិនរង់ចាំសម្រាប់ពាក្យបញ្ជាបញ្ចប់ទេហើយស្ថានភាពត្រឡប់គឺ 0 ។ ពាក្យបញ្ជាត្រូវបានបំបែកដោយ a ; ត្រូវបានប្រតិបត្តិជាបន្តបន្ទាប់; សែលរង់ចាំសម្រាប់ពាក្យបញ្ជានីមួយៗដើម្បីបញ្ចប់។ ស្ថានភាពត្រឡប់គឺជាស្ថានភាពចេញរបស់ពាក្យបញ្ជាចុងក្រោយដែលបានប្រតិបត្តិ។
សញ្ញាប្រមាណវិធីបញ្ជា && និង || បង្ហាញនិងបញ្ជី AND បញ្ជី OR រៀងៗខ្លួន។ បញ្ជី AND មានសំណុំបែបបទ
ពាក្យបញ្ជា 1 && command2
ពាក្យបញ្ជា 2 ត្រូវបានប្រតិបត្តិប្រសិនបើនិងតែបើ ពាក្យបញ្ជា 1 ត្រឡប់ស្ថានភាពចេញរបស់សូន្យ។
បញ្ជី OR មួយមានទំរង់
ពាក្យបញ្ជា 1 || command2
ពាក្យបញ្ជា 2 ត្រូវបានប្រតិបត្តិបើនិងតែបើ ពាក្យបញ្ជា 1 ត្រឡប់ស្ថានភាពចេញដែលមិនមែនសូន្យ។ ស្ថានភាពត្រឡប់នៃបញ្ជី AND និង OR គឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយដែលបានប្រតិបត្តិក្នុងបញ្ជី។
ពាក្យបញ្ជាបរិវេណ
ពាក្យបញ្ជាសមាសធាតុ មួយគឺដូចខាងក្រោម:
( បញ្ជី )
បញ្ជី ត្រូវបានប្រតិបត្តិក្នុងកូនសោមួយ។ ការកំណត់អថេរនិងពាក្យបញ្ជាឋិតិវន្តដែលប៉ះពាល់ដល់បរិស្ថានរបស់សែលមិននៅមានប្រសិទ្ធិភាពទេបន្ទាប់ពីពាក្យបញ្ជាបានបញ្ចប់។ ស្ថានភាពត្រឡប់គឺជាស្ថានភាពចេញពី បញ្ជី ។
{ បញ្ជី ; }
បញ្ជី ត្រូវបានប្រតិបត្តិក្នុងបរិស្ថានសែលបច្ចុប្បន្ន។ បញ្ជី ត្រូវតែត្រូវបានបញ្ចប់ដោយបន្ទាត់ថ្មីឬសញ្ញាចំណុចក្បៀស។ នេះត្រូវបានគេស្គាល់ថាជា ពាក្យបញ្ជាក្រុម ។ ស្ថានភាពត្រឡប់គឺជាស្ថានភាពចេញពី បញ្ជី ។ ចំណាំថាមិនដូច metacharacters ( និង ) , { និង } គឺជា ពាក្យបម្រុងទុក ហើយត្រូវតែកើតឡើងនៅពេលដែលពាក្យបម្រុងទុកត្រូវបានអនុញ្ញាតឱ្យទទួលស្គាល់។ ដោយហេតុថាពួកគេមិនបង្កឱ្យមានការបំបែកពាក្យទេពួកគេត្រូវតែបំបែកពី បញ្ជី ដោយដកឃ្លា។
(( កន្សោម ))
កន្សោម ត្រូវបានវាយតំលៃដោយយោងទៅតាមក្បួនដែលបានពិពណ៌នាខាងក្រោមក្រោម ការវាស់វែងអាត្ម័ន ។ ប្រសិនបើតម្លៃនៃកន្សោមមិនសូន្យស្ថានភាពត្រឡប់គឺ 0 ។ បើមិនដូច្នោះទេស្ថានភាពត្រឡប់គឺ 1 ។ នេះស្មើគ្នាយ៉ាងពិតប្រាកដដើម្បី ឱ្យ " កន្សោម " ។
[[ ការបញ្ចេញមតិ ]]
ត្រឡប់ស្ថានភាពនៃ 0 ឬ 1 អាស្រ័យលើការវាយតម្លៃនៃកន្សោមកន្សោមលក្ខខណ្ឌ។ ការបញ្ចេញមតិត្រូវបានបង្កើតឡើងដោយបឋមដែលបានពិពណ៌នាដូចខាងក្រោមក្រោមការពន្យល់តាម លក្ខខណ្ឌ ។ ការបំបែកពាក្យនិងការពង្រីកឈ្មោះផ្លូវមិនត្រូវបានអនុវត្តលើពាក្យរវាង [[ និង ]] ទេ។ ការពង្រីក tilde, ការពង្រីកនិងការពង្រីកអថេរការពង្រីកនព្វន្តការជំនួសពាក្យជំនួសការជំនួសដំណើរការនិងការដកស្រង់ត្រូវបានអនុវត្ត។
នៅពេលដែលសញ្ញា == និង ! = ត្រូវបានគេប្រើខ្សែអក្សរទៅខាងស្តាំនៃប្រតិបត្តិករត្រូវបានចាត់ទុកថាជាលំនាំនិងត្រូវបានផ្គូផ្គងយោងតាមក្បួនដែលបានពិពណ៌នាខាងក្រោមក្រោម ការផ្គូផ្គងលំនាំ ។ តម្លៃត្រឡប់គឺ 0 ប្រសិនបើខ្សែអក្សរត្រូវគ្នាឬមិនត្រូវគ្នានឹងលំនាំរៀងគ្នានិង 1 បើមិនដូច្នេះទេ។ ផ្នែកណាមួយនៃលំនាំអាចត្រូវបានដកស្រង់ដើម្បីបង្ខំឱ្យវាត្រូវបានផ្គូផ្គងជាខ្សែអក្សរ។
កន្សោមអាចត្រូវបានផ្សំដោយប្រើសញ្ញាប្រមាណវិធីដូចខាងក្រោមដែលត្រូវបានរាយក្នុងលំដាប់ថយចុះនៃអាទិភាព:
( កន្សោម )
ត្រឡប់តម្លៃនៃ កន្សោម ។ វាអាចត្រូវបានប្រើដើម្បីបដិសេធអាទិភាពធម្មតារបស់ប្រតិបត្តិករ។
! កន្សោម
ពិតប្រសិនបើ ការបញ្ចេញមតិ មិនពិត។
expression1 && expression2
ពិតប្រសិនបើទាំងពីរ expression1 និង expression2 ពិត។
expression1 || expression2 ពិតប្រសិនបើ expression1 ឬ expression2 ពិត។
និង & || សញ្ញាប្រមាណវិធីមិនវាយតម្លៃ expression2 ប្រសិនបើតម្លៃនៃ expression1 គឺគ្រប់គ្រាន់ដើម្បីកំណត់តម្លៃត្រឡប់នៃកន្សោមលក្ខខណ្ឌទាំងមូល។
សម្រាប់ ឈ្មោះ [ នៅក្នុង ពាក្យ ]; ធ្វើ បញ្ជី ; បានធ្វើ
បញ្ជីពាក្យខាងក្រោមដែលត្រូវបានពង្រីកបង្កើតបញ្ជីធាតុ។ ឈ្មោះ អថេរត្រូវបានកំណត់ទៅធាតុនីមួយៗនៃបញ្ជីនេះហើយ បញ្ជី ត្រូវបានប្រតិបត្តិរាល់ពេល។ ប្រសិនបើ ពាក្យ ត្រូវបានលុបពាក្យបញ្ជា សម្រាប់ ប្រតិបត្តិ បញ្ជី ម្តងសម្រាប់ប៉ារ៉ាម៉ែត្រទីតាំងនីមួយៗដែលត្រូវបានកំណត់ (សូមមើល PARAMETERS ខាងក្រោម) ។ ស្ថានភាពត្រឡប់គឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយដែលប្រតិបត្តិ។ ប្រសិនបើការពង្រីកនៃធាតុ នៅ ពីក្រោយ ក្នុង លទ្ធផលនៅក្នុងបញ្ជីទទេគ្មានពាក្យបញ្ជាត្រូវបានប្រតិបត្តិហើយស្ថានភាពត្រឡប់គឺ 0 ។
សម្រាប់ (( expr1 ; expr2 ; expr3 )); ធ្វើ បញ្ជី ; បានធ្វើ
ទីមួយការគណនា អក្សរសិល្ប៍ expr1 ត្រូវបានគេវាយតំលៃដោយយោងទៅតាមក្បួនដែលបានពិពណ៌នាខាងក្រោមក្រោម ការវាស់វែងរបស់ ARITHMETIC EVALUATION ។ expr2 expression អ គណិត ត្រូវបានវាយតម្លៃម្តងហើយម្តងទៀតរហូតទាល់តែវាវាយតម្លៃជាសូន្យ។ រាល់ពេល expr2 វាយតម្លៃទៅជាតម្លៃដែលមិនមែនសូន្យនោះ បញ្ជី ត្រូវបានប្រតិបត្តិហើយ ការវាយតម្លៃអក្សរសិល្ប៍ expr3 ត្រូវបានវាយតម្លៃ។ ប្រសិនបើកន្សោមណាមួយត្រូវបានលុបវាធ្វើដូចជាប្រសិនបើវាវាយតំលៃ 1 ។ តម្លៃត្រឡប់គឺជាស្ថានភាពចាកចេញរបស់ពាក្យបញ្ជាចុងក្រោយក្នុង បញ្ជី ដែលត្រូវបានប្រតិបត្តិឬមិនពិតប្រសិនបើមានកន្សោមណាមួយមិនត្រឹមត្រូវ។
ជ្រើសរើស ឈ្មោះ [ នៅក្នុង ពាក្យ ] ។ ធ្វើ បញ្ជី ; បានធ្វើ
បញ្ជីពាក្យខាងក្រោមដែលត្រូវបានពង្រីកបង្កើតបញ្ជីធាតុ។ សំណុំពាក្យដែលពង្រីកត្រូវបានបោះពុម្ពលើកំហុសស្តង់ដារដែលនីមួយៗមានលេខ។ ប្រសិនបើ ពាក្យ ត្រូវបានលុបប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានបោះពុម្ព (សូមមើល PARAMETERS ខាងក្រោម) ។ ប្រអប់បញ្ចូល PS3 ត្រូវបានបង្ហាញហើយបន្ទាត់អានពីការបញ្ចូលស្តង់ដារ។ ប្រសិនបើបន្ទាត់មានលេខដែលត្រូវគ្នានឹងមួយនៃពាក្យដែលបានបង្ហាញបន្ទាប់មកតម្លៃនៃ ឈ្មោះ ត្រូវបានកំណត់ទៅពាក្យនោះ។ ប្រសិនបើបន្ទាត់ទទេពាក្យនិងប្រអប់បញ្ចូលត្រូវបានបង្ហាញម្តងទៀត។ ប្រសិនបើ EOF ត្រូវបានអានពាក្យបញ្ជាបានបញ្ចប់។ តម្លៃផ្សេងទៀតណាមួយដែលអានអាចធ្វើ ឱ្យឈ្មោះ ត្រូវបានកំណត់ទៅជាទទឹង។ បន្ទាត់អានត្រូវបានរក្សាទុកក្នុងអថេរ REPLY ។ បញ្ជី ត្រូវបានប្រតិបត្តិបន្ទាប់ពីជម្រើសនីមួយៗរហូតដល់ ពាក្យសម្ងាត់បំបែក ត្រូវបានប្រតិបត្តិ។ ស្ថានភាពចេញរបស់ ជម្រើស គឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយដែលប្រតិបត្តិក្នុង បញ្ជី ឬសូន្យបើគ្មានពាក្យបញ្ជាត្រូវបានប្រតិបត្តិ។
ពាក្យ case ក្នុង [[]] pattern [ | pattern ]
ពាក្យបញ្ជា ករណី ដំបូងពង្រីក ពាក្យ ហើយព្យាយាមផ្គូផ្គងវាជាមួយ លំនាំ នីមួយៗដោយប្រើក្បួនផ្គូផ្គងដូចគ្នាសម្រាប់ការពង្រីកឈ្មោះផ្លូវ (សូមមើលការពង្រីកឈ្មោះផ្លូវខាងក្រោម) ។ នៅពេលរកឃើញល្បែង បញ្ជី ត្រូវគ្នាត្រូវបានប្រតិបត្តិ។ បន្ទាប់ពីការប្រកួតទី 1 គ្មានការប្រកួតណាមួយត្រូវបានគេព្យាយាមឡើយ។ ស្ថានភាពចេញគឺសូន្យបើគ្មានផ្គូផ្គងលំនាំទេ។ បើមិនដូច្នោះទេវាជាស្ថានភាពចាកចេញរបស់ពាក្យបញ្ជាចុងក្រោយដែលប្រតិបត្តិក្នុង បញ្ជី ។
ប្រសិនបើ បញ្ជី ; បន្ទាប់មក ចុះបញ្ជី; [ បញ្ជី elif ; បន្ទាប់មក ចុះបញ្ជី ; ] ... [ បញ្ជី ផ្សេង ; ] fi
បើ បញ្ជី ត្រូវបានប្រតិបត្តិ។ ប្រសិនបើស្ថានភាពចេញរបស់វាសូន្យ នោះ បញ្ជី បន្ទាប់ នឹងត្រូវបានប្រតិបត្តិ។ បើមិនដូច្នោះទេ បញ្ជីឈ្មោះ elif នីមួយៗត្រូវបានប្រតិបត្តិក្នុងវេនហើយបើស្ថានភាពចេញរបស់វាគឺសូន្យ នោះ បញ្ជី ត្រូវគ្នានឹងត្រូវបានប្រតិបត្តិហើយពាក្យបញ្ជានឹងបញ្ចប់។ បើមិនដូច្នោះទេ បញ្ជី ផ្សេងទៀត ត្រូវបានប្រតិបត្តិប្រសិនបើមាន។ ស្ថានភាពចេញគឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយដែលបានប្រតិបត្តិឬសូន្យបើគ្មានលក្ខខណ្ឌបានសាកល្បងពិត។
ខណៈពេលដែល បញ្ជី ; ធ្វើ បញ្ជី ; បានធ្វើ
រហូតដល់ បញ្ជី ធ្វើ បញ្ជី ; បានធ្វើ
ពាក្យបញ្ជា ខណៈពេលដែល ពាក្យបញ្ជាបន្តប្រតិបត្តិ បញ្ជី ធ្វើ ដរាបណាពាក្យបញ្ជាចុងក្រោយក្នុង បញ្ជី ត្រឡប់ស្ថានភាពចេញរបស់សូន្យ។ ពាក្យបញ្ជា រហូតដល់ ពាក្យស្លោកគឺដូចគ្នាទៅនឹងពាក្យបញ្ជា ខណៈពេល ដែលលើកលែងតែការធ្វើតេស្តត្រូវបានបដិសេធ។ បញ្ជីការងារ ត្រូវបានប្រតិបត្តិដរាបណាពាក្យបញ្ជាចុងក្រោយក្នុង បញ្ជី ត្រឡប់ស្ថានភាពចាកចេញដែលមិនមែនសូន្យ។ ស្ថានភាពចេញនៃ ខណៈពេល និង រហូតដល់ ពាក្យបញ្ជាគឺជាស្ថានភាពចេញរបស់ពាក្យបញ្ជា ធ្វើ បញ្ជី ចុងក្រោយដែលប្រតិបត្តិឬសូន្យបើគ្មានត្រូវបានប្រតិបត្តិ។
[ មុខងារ ] ឈ្មោះ () { បញ្ជី ; }
វាកំណត់មុខងារដែលមានឈ្មោះ។ តួ នៃអនុគមន៍គឺជា បញ្ជី ពាក្យបញ្ជារវាង {និង} ។ បញ្ជីនេះត្រូវបានប្រតិបត្តិនៅពេលដែល ឈ្មោះ ត្រូវបានបញ្ជាក់ជាឈ្មោះពាក្យបញ្ជាសាមញ្ញ។ ស្ថានភាពចេញរបស់អនុគមន៍គឺជាស្ថានភាពចេញពីពាក្យបញ្ជាចុងក្រោយដែលបានប្រតិបត្តិក្នុងតួ។ (សូមមើលមុខងារនៅខាងក្រោម) ។
យោបល់
នៅក្នុងសែលដែលមិនមានអន្តរកម្មឬសែលអន្តរសកម្មដែលជម្រើស អន្តរសកម្ម ចំពោះ ការស្ថាបនាហាង គឺត្រូវបានបើក (សូមមើល SHELL BUILTIN COMMANDS ខាងក្រោម) ពាក្យចាប់ផ្ដើមដោយ # បណ្តាលអោយពាក្យនោះនិងតួអក្សរដែលនៅសល់ទាំងអស់នៅលើបន្ទាត់នោះត្រូវបានមិនអើពើ។ សែលអន្តរកម្មដែលមិនបានបើកជម្រើស អន្តរសកម្មដែល ផ្តល់យោបល់មិនអនុញ្ញាតមតិយោបល់ទេ។ ជម្រើស អន្តរសកម្ម _commentsត្រូវបានបើកតាមលំនាំដើមនៅក្នុងសែលអន្តរកម្ម។
QUOTING
ការដកស្រង់ ត្រូវបានប្រើដើម្បីលុបអត្ថន័យពិសេសនៃតួអក្សរជាក់លាក់ឬពាក្យទៅកាន់សែល។ សម្រង់អាចត្រូវបានប្រើដើម្បីបិទការព្យាបាលពិសេសសម្រាប់តួអក្សរពិសេសដើម្បីការពារពាក្យរក្សាទុកពីការទទួលស្គាល់ដូចនេះហើយដើម្បីការពារការពង្រីកប៉ារ៉ាម៉ែត្រ។
គ្នានៃ metacharacters ដែល បានរាយខាងលើនៅក្រោម DEFINITIONS មានន័យពិសេសទៅសែលនិងត្រូវតែត្រូវបានដកស្រង់សម្តីបើវាតំណាងឱ្យខ្លួនឯង។
នៅពេលដែលឧបករណ៍ពង្រីកប្រវត្តិសាស្រ្តពាក្យបញ្ជាកំពុងត្រូវបានប្រើប្រាស់លក្ខណៈ ពង្រីកប្រវត្តិសាស្រ្ត ជាធម្មតា ! ត្រូវតែត្រូវបានដកស្រង់ដើម្បីការពារការពង្រីកប្រវត្តិសាស្រ្ត។
មានយន្តការដកស្រង់ចំនួនបី: តួអក្សរគេច , សញ្ញាសម្រង់តែមួយនិងសញ្ញាសម្រង់ទ្វេ។
សញ្ញា \\ ដែលត្រូវបានដកស្រង់ ( \ ) គឺ តួអក្សរគេចចេញ ។ វារក្សាតម្លៃព្យញ្ជនៈបន្ទាប់តាមលំដាប់លំដោយដោយលើកលែងតែ <បន្ទាត់ថ្មី> ។ បើគូរបន្ទាត់ <បន្ទាត់ថ្មី> លេចឡើងហើយសញ្ញា \ 'មិនត្រូវបានដកស្រង់ដោយខ្លួនវា \\ "បន្ទាត់ថ្មីត្រូវបានចាត់ទុកថាជាបន្ទាត់បន្ត (មានន័យថាវាត្រូវបានយកចេញពីស្ទ្រីមបញ្ចូលហើយត្រូវបានអើពើយ៉ាងមានប្រសិទ្ធភាព) ។
ការភ្ជាប់តួអក្សរនៅក្នុងសញ្ញាសម្រង់តែមួយរក្សានូវតម្លៃព្យញ្ជនៈនៃតួអក្សរនីមួយៗក្នុងសញ្ញាសម្រង់។ សម្រង់មួយអាចនឹងមិនកើតឡើងរវាងសញ្ញាសម្រង់តែមួយសូម្បីតែនៅពេលដែលមានសញ្ញាថយក្រោយ។
ការភ្ជាប់តួអក្សរនៅក្នុងសញ្ញាសម្រង់ទ្វេរតន៍រក្សាតម្លៃតួរអក្សរទាំងអស់ក្នុងសញ្ញាដកស្រង់ដោយលើកលែងតែ $ , ` និង \ ។ តួអក្សរ $ និង ` រក្សាអត្ថន័យពិសេសរបស់ពួកគេនៅក្នុងសញ្ញាសម្រង់ទ្វេ។ សញ្ញា (\\) នឹងរក្សាអត្ថន័យពិសេសរបស់វានៅពេលដែលអមដោយតួអក្សរដូចខាងក្រោម: $ , ` , \ , ឬ
ប៉ារ៉ាម៉ែត្រពិសេស * និង @ មានអត្ថន័យពិសេសនៅពេលដាក់សញ្ញាសម្រង់ពីរ (សូមមើល PARAMETERS ខាងក្រោម) ។
ពាក្យនៃសំណុំបែបបទ ' $ ' ខ្សែអក្សរ 'ត្រូវបានចាត់ទុកជាពិសេស។ ពាក្យពង្រីកទៅជា ខ្សែអក្សរ ជាមួយនឹងតួអក្សរសញ្ញា - ដែលបានគេចចេញជំនួសដោយបញ្ជាក់តាមស្តង់ដារ ANSI C ។ សញ្ញាវាសនាគេចចេញជាបន្តបន្ទាប់ប្រសិនបើមានវត្តមានត្រូវបានបម្លែងដូចខាងក្រោម:
\ a
ជូនដំណឹង (កណ្ដឹង)
\ ខ
backspace
\ e
តួអក្សរគេចចេញ
\ f
បង្កើតមតិព័ត៌មាន
\ n
បន្ទាត់ថ្មី
\ r
ត្រឡប់មកវិញ
\ t
ផ្ទាំងផ្ដេក
\ v
ផ្ទាំងបញ្ឈរ
\\
សញ្ញាឆាក
\ '
សម្រង់តែមួយ
\ n ន
តួអក្សរប្រាំបីប៊ីដែលតម្លៃគឺជាតម្លៃគោលប្រាំបី nnn (មួយទៅបីខ្ទង់)
\ x HH
តួអក្សរប្រាំបីប៊ីដែលតម្លៃរបស់វាជាតម្លៃគោលដប់ប្រាំមួយ HH (ខ្ទង់មួយឬពីរខ្ទង់)
\ x
តួអក្សរវត្ថុបញ្ជា -x
លទ្ធផលពង្រីកត្រូវបានដកស្រង់តែមួយដូចជាសញ្ញាដុល្លារមិនមានវត្តមាន។
ខ្សែអក្សរដែលបានដកស្រង់ទ្វេដងដោយសញ្ញាប្រាក់ដុល្លារ ( $ ) នឹងធ្វើអោយឃ្លាត្រូវបានបកប្រែទៅតាមមូលដ្ឋានបច្ចុប្បន្ន។ ប្រសិនបើមូលដ្ឋានបច្ចុប្បន្នគឺ C ឬ POSIX សញ្ញាប្រាក់ដុល្លារត្រូវបានមិនអើពើ។ ប្រសិនបើឃ្លាត្រូវបានបកប្រែនិងជំនួសជំនួសវិញត្រូវបានដកស្រង់ទ្វេ។
PARAMETERS
ប៉ារ៉ាម៉ែត្រ ជាអង្គភាពដែលរក្សាទុកតម្លៃ។ វាអាចជា ឈ្មោះ លេខឬតួអក្សរពិសេសមួយក្នុងចំណោមតួអក្សរពិសេសដែលបានរាយខាងក្រោម ប៉ារ៉ាម៉ែត្រពិសេស ។ សម្រាប់គោលបំណងរបស់សែល អថេរ គឺជាប៉ារ៉ាម៉ែត្រដែល មានឈ្មោះ ។ អថេរមួយ មានតម្លៃ និង គុណលក្ខណៈ សូន្យឬច្រើន។ គុណលក្ខណៈត្រូវបានកំណត់ដោយប្រើពាក្យបញ្ជា builtin command (សូមមើល ប្រកាស ខាងក្រោមក្នុង ពាក្យបញ្ជា SHELL BUILTIN) ។
ប៉ារ៉ាម៉ែត្រត្រូវបានកំណត់បើវាត្រូវបានផ្តល់តម្លៃ។ ឃ្លា null គឺជាតម្លៃត្រឹមត្រូវ។ នៅពេលដែលអថេរត្រូវបានកំណត់វាមិនអាចត្រូវបានកំណត់តែប៉ុណ្ណោះដោយប្រើពាក្យបញ្ជា builtin មិនបានកំណត់ (សូមមើលពាក្យបញ្ជា SHELL BUILTIN ខាងក្រោម) ។
អថេរ មួយអាចត្រូវបានកំណត់ដោយសេចក្តីថ្លែងការណ៍នៃទំរង់
ឈ្មោះ = [ តម្លៃ ]
ប្រសិនបើមិនបានផ្តល់តម្លៃអថេរត្រូវបានផ្តល់ឱ្យខ្សែអក្សរទទេ។ តម្លៃ ទាំងអស់ត្រូវឆ្លងកាត់ការពង្រីកទំហំប៉ារ៉ាម៉ែត្រនិងការពង្រីកអថេរជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធនិងការដកស្រង់ចេញ (សូមមើល EXPANSION ខាងក្រោម) ។ ប្រសិនបើអថេរមានសំណុំ គុណនាមលេខគំនូរ របស់វានោះ តម្លៃ នឹងត្រូវបានពង្រីកបើទោះបីជាការពង្រីក $ (... )) មិនត្រូវបានប្រើ (សូមមើល ការពង្រីកនព្វន្ធ នៅខាងក្រោម) ។ ការបំបែកពាក្យមិនត្រូវបានអនុវត្តទេលើកលែងតែ "$ @" ដូចដែលបានពន្យល់ខាងក្រោមក្រោម ប៉ារ៉ាម៉ែត្រពិសេស ។ ការពង្រីកឈ្មោះផ្លូវមិនត្រូវបានអនុវត្ត។ សេចក្តីថ្លែងការណ៍កិច្ចការក៏អាចលេចឡើងជាអាគុយម៉ង់ទៅពាក្យបញ្ជាបង្កើតពាក្យបញ្ជា, វាយអក្សរ , នាំចេញ , តែអាន និង មូលដ្ឋាន ។
ប៉ារ៉ាម៉ែត្រស្តង់ដារ
ប៉ារ៉ាម៉ែត្រទីតាំង គឺជាប៉ារ៉ាម៉ែត្រដែលមានតួលេខមួយឬច្រើនជាងលេខខ្ទង់ 0 ។ ប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានកំណត់ពីអាគុយម៉ង់របស់សែលនៅពេលវាត្រូវបានហៅនិងអាចត្រូវបានផ្ទេរឡើងវិញដោយប្រើពាក្យបញ្ជា builtin ។ ប៉ារ៉ាម៉ែត្រទីតាំងអាចមិនត្រូវបានកំណត់ឱ្យមានសេចក្ដីថ្លែងការបញ្ចោញ។ ប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានជំនួសជាបណ្តោះអាសន្ននៅពេលដែលអនុគមន៍សែលត្រូវបានប្រតិបត្តិ (សូមមើលលក្ខណៈពិសេសខាងក្រោម) ។
នៅពេលប៉ារ៉ាម៉ែត្រមានទីតាំងច្រើនជាងខ្ទង់មួយត្រូវបានពង្រីកវាត្រូវបានដាក់ក្នុងដង្កៀប (សូមមើល EXPANSION ខាងក្រោម) ។
ប៉ារ៉ាម៉ែត្រពិសេស
សែលព្យាបាលប៉ារ៉ាម៉ែត្រជាច្រើន។ ប៉ារ៉ាម៉ែត្រទាំងនេះអាចត្រូវបានយោងតែប៉ុណ្ណោះ។ ការចាត់ចែងឱ្យពួកគេមិនត្រូវបានអនុញ្ញាតទេ។
*
ពង្រីកទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមពីមួយ។ នៅពេលការពង្រីកកើតឡើងនៅក្នុងសញ្ញាសម្រង់ទ្វេ, វាពង្រីកទៅពាក្យតែមួយជាមួយនឹងតម្លៃនៃប៉ារ៉ាម៉ែត្រនីមួយៗដែលបំបែកដោយតួអក្សរដំបូងនៃអថេរពិសេស IFS ។ នោះគឺ " $ * " ស្មើនឹង " $ 1 c $ 2 c ... " ដែល c ជាតួអក្សរដំបូងនៃតម្លៃនៃអថេរ IFS ។ ប្រសិនបើ IFS មិនត្រូវបានកំណត់ប៉ារ៉ាម៉ែត្រត្រូវបានបំបែកដោយដកឃ្លា។ ប្រសិនបើ IFS គឺគ្មានតម្លៃប៉ារ៉ាម៉ែត្រត្រូវបានបញ្ចូលដោយគ្មានសញ្ញាបំបែក។
@
ពង្រីកទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមពីមួយ។ នៅពេលការពង្រីកកើតឡើងនៅក្នុងសញ្ញាសម្រង់ទ្វេប៉ារ៉ាម៉ែត្រនីមួយៗពង្រីកទៅពាក្យដាច់ដោយឡែក។ នោះគឺ " $ @ " ស្មើនឹង " $ 1 " " $ 2 " ... នៅពេលមិនមានប៉ារ៉ាម៉ែត្រទីតាំង " $ @ " និង $ @ ពង្រីកទៅគ្មានអ្វី (ឧទាហរណ៍ពួកគេត្រូវបានយកចេញ) ។
#
ពង្រីកចំនួនប៉ារ៉ាម៉ែត្រទីតាំងក្នុងគោលដប់។
?
ពង្រីកទៅជាស្ថានភាពនៃបំពង់បង្ហូរផ្ទៃខាងមុខដែលបានប្រតិបត្តិថ្មីៗបំផុត។
-
ពង្រីកទៅទង់ជម្រើសបច្ចុប្បន្នដែលបានបញ្ជាក់លើការហៅដោយពាក្យបញ្ជា builtin ឬសំណុំដែលបានកំណត់ដោយសែលខ្លួនវា (ដូចជាជម្រើស - i ) ។
$
ពង្រីកទៅដំណើរការ ID នៃសែល។ នៅក្នុង a () subshell វាពង្រីកទៅដំណើរការ ID នៃសែលបច្ចុប្បន្នមិនមែន subshell ទេ។
!
ពង្រីកទៅលេខសម្គាល់ដំណើរការនៃពាក្យបញ្ជាផ្ទៃខាងក្រោយដែលមិនត្រូវបានអនុវត្ត (មិនសមកាលកម្ម) ។
0
ពង្រីកទៅជាឈ្មោះសែលឬសែលស្គ្រីប។ នេះត្រូវបានកំណត់នៅការចាប់ផ្តើមសែល។ ប្រសិនបើ bash ត្រូវបានគេហៅជាមួយពាក្យបញ្ជានៃពាក្យបញ្ជា $ 0 ត្រូវបានកំណត់ទៅជាឈ្មោះនៃឯកសារនោះ។ ប្រសិនបើ bash ត្រូវបានចាប់ផ្ដើមដោយជម្រើស -c នោះ $ 0 ត្រូវបានកំណត់ទៅអាគុយម៉ង់ទីមួយបន្ទាប់ពីខ្សែអក្សរត្រូវបានប្រតិបត្តិបើមានមួយ។ បើមិនដូច្នេះទេវាត្រូវបានកំណត់ទៅឈ្មោះឯកសារដែលត្រូវបានប្រើដើម្បីហៅថា bash ដែលបានផ្តល់ដោយអាគុយម៉ង់សូន្យ។
_
នៅពេលចាប់ផ្ដើមសែលកំណត់ទៅឈ្មោះឯកសារដាច់ខាតនៃសែលឬស្គ្រីបសែលដែលកំពុងត្រូវបានប្រតិបត្តិដូចដែលបានអនុម័តនៅក្នុងបញ្ជីអាគុយម៉ង់។ បន្ទាប់មកពង្រីកអាគុយចុងក្រោយទៅពាក្យបញ្ជាពីមុនបន្ទាប់ពីការពង្រីក។ កំណត់ផងដែរទៅឈ្មោះឯកសារពេញលេញនៃពាក្យបញ្ជានីមួយៗដែលបានប្រតិបត្តិនិងដាក់ក្នុងបរិស្ថានដែលបាននាំចេញទៅពាក្យបញ្ជានោះ។ ពេលពិនិត្យមើលសំបុត្រប៉ារ៉ាម៉ែត្រនេះផ្ទុកឈ្មោះរបស់ឯកសារសំបុត្របច្ចុប្បន្នកំពុងត្រូវបានពិនិត្យ។
អថេរសែល
អថេរដូចខាងក្រោមត្រូវបានកំណត់ដោយសែល:
BASH
ពង្រីកទៅឈ្មោះឯកសារពេញលេញដែលត្រូវបានប្រើដើម្បីហៅធាតុរបស់ bash នេះ ។
BASH_VERSINFO
អថេរអ័ក្សដែលបានអានតែសមាជិកដែលមានព័ត៌មានកំណែសម្រាប់ធាតុរបស់ bash នេះ ។ តម្លៃដែលបានផ្តល់ទៅសមាជិកអារ៉េមានដូចខាងក្រោម:
BASH_VERSINFO [ 0]
លេខកំណែសំខាន់ (ការ ចេញផ្សាយ ) ។
BASH_VERSINFO [ 1]
លេខកំណែអនីតិជន ( កំណែ ) ។
BASH_VERSINFO [ 2]
កម្រិតបំណះ។
BASH_VERSINFO [ 3]
កំណែស្ថាបនា។
BASH_VERSINFO [ 4]
ស្ថានភាពចេញផ្សាយ (ឧទាហរណ៍ beta1 ) ។
BASH_VERSINFO [ 5]
តម្លៃ MACHTYPE ។
BASH_VERSION
ពង្រីកទៅជាខ្សែអក្សរដែលពណ៌នាអំពីកំណែរបស់ bash នេះ ។
COMP_CWORD
COMP_LINE
បន្ទាត់ពាក្យបញ្ជាបច្ចុប្បន្ន។ អថេរនេះអាចប្រើបានតែនៅក្នុងមុខងារសែលនិងពាក្យបញ្ជាខាងក្រៅដែលត្រូវបានហៅដោយកន្លែងបំពេញដែលអាចកំណត់បាន (សូមមើល ការបំពេញកម្មវិធី ខាងក្រោម) ។
COMP_POINT
COMP_WORDS
អថេរអារេ (សូមមើល អារេ ខាងក្រោម) ដែលមានពាក្យនីមួយៗក្នុងបន្ទាត់ពាក្យបញ្ជាបច្ចុប្បន្ន។ អថេរនេះគឺអាចប្រើបានតែនៅក្នុងមុខងារសែលដែលត្រូវបានហៅដោយកន្លែងបំពេញដែលអាចកំណត់បាន (សូមមើល ការបំពេញកម្មវិធី ខាងក្រោម) ។
DIRSTACK
អថេរអារេ (សូមមើល អារេ ខាងក្រោម) ដែលមានមាតិកាបច្ចុប្បន្ននៃជង់ថត។ ថតលេចឡើងនៅក្នុងជង់ក្នុងលំដាប់ដែលពួកវាត្រូវបានបង្ហាញដោយ dirs builtin ។ ការផ្តល់ទៅសមាជិកនៃអថេរអារេនេះអាចត្រូវបានប្រើដើម្បីកែប្រែថតដែលមានរួចហើយនៅក្នុងជង់ប៉ុន្តែ ស្ថាបនា pushd និង popd ត្រូវតែប្រើដើម្បីបន្ថែមនិងលុបថត។ កិច្ចការទៅអថេរនេះនឹងមិនផ្លាស់ប្តូរថតបច្ចុប្បន្នទេ។ ប្រសិនបើ DIRSTACK មិនត្រូវបានកំណត់វាបាត់បង់លក្ខណសម្បត្តិពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
EUID
ពង្រីកទៅលេខសម្គាល់អ្នកប្រើដែលមានប្រសិទ្ធិភាពនៃអ្នកប្រើបច្ចុប្បន្នដែលបានចាប់ផ្ដើមនៅពេលចាប់ផ្ដើមសែល។ អថេរនេះគឺបានតែអាន។
FUNCNAME
ឈ្មោះនៃមុខងារសែលបច្ចុប្បន្នកំពុងដំណើរការ។ អថេរនេះមានតែពេលអនុគមន៍សែលត្រូវបានប្រតិបត្តិប៉ុណ្ណោះ។ កិច្ចការទៅ FUNCNAME គ្មានប្រសិទ្ធភាពហើយត្រឡប់ស្ថានភាពកំហុសទេ។ ប្រសិនបើ FUNCNAME មិនត្រូវបានកំណត់ទេវាបាត់បង់លក្ខណៈពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
ក្រុម
អថេរអារេមួយដែលមានបញ្ជីក្រុមដែលអ្នកប្រើបច្ចុប្បន្នជាសមាជិក។ កិច្ចការទៅ GROUPS គ្មានប្រសិទ្ធភាពហើយត្រឡប់ស្ថានភាពកំហុស។ ប្រសិនបើ GROUPS មិនត្រូវបានកំណត់វាបាត់បង់លក្ខណសម្បត្តិពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
HISTCMD
លេខប្រវត្តិឬលិបិក្រមនៅក្នុងបញ្ជីប្រវត្តិនៃពាក្យបញ្ជាបច្ចុប្បន្ន។ ប្រសិនបើ HISTCMD មិនត្រូវបានកំណត់វាបាត់បង់លក្ខណៈពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
HOSTNAME
កំណត់ដោយស្វ័យប្រវត្តិទៅឈ្មោះរបស់ម៉ាស៊ីនបច្ចុប្បន្ន។
HOSTTYPE
កំណត់ដោយស្វ័យប្រវត្តិទៅខ្សែអក្សរដែលពិពណ៌នាតែអំពីប្រភេទម៉ាស៊ីនដែល bash កំពុងប្រតិបត្តិ។ លំនាំដើមគឺប្រព័ន្ធអាស្រ័យ។
LINENO
រាល់ពេលប៉ារ៉ាម៉ែត្រនេះត្រូវបានយោងសែលនឹងជំនួសលេខគោលដប់ដែលតំណាងឱ្យលេខបន្ទាត់បន្តបន្ទាប់បច្ចុប្បន្ន (ចាប់ផ្ដើមដោយ 1) ក្នុងស្គ្រីបឬអនុគមន៍។ នៅពេលដែលមិនមាននៅក្នុងស្គ្រីបឬមុខងារតម្លៃដែលត្រូវបានជំនួសមិនត្រូវបានធានាថាមានអត្ថន័យទេ។ ប្រសិនបើ LINENO មិនត្រូវបានកំណត់វាបាត់លក្ខណៈពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
MACHTYPE
កំណត់ដោយស្វ័យប្រវត្តិទៅខ្សែអក្សរដែលពិពណ៌នាយ៉ាងពេញលេញអំពីប្រភេទប្រព័ន្ធដែល bash កំពុងប្រតិបត្តិក្នុងទ្រង់ទ្រាយ ប្រព័ន្ធ GNU cpu-system- standard ។ លំនាំដើមគឺប្រព័ន្ធអាស្រ័យ។
OLDPWD
ថតការងារមុនដូចដែលបានកំណត់ដោយពាក្យបញ្ជា cd ។
OPTARG
តម្លៃនៃអាគុយម៉ង់ជម្រើសចុងក្រោយដែលបានដំណើរការដោយពាក្យបញ្ជា getopts builtin (សូមមើលពាក្យបញ្ជា SHELL BUILTIN ខាងក្រោម) ។
OPTIND
លិបិក្រមរបស់អាគុយម៉ង់បន្ទាប់ត្រូវបានដំណើរការដោយពាក្យបញ្ជា getopts builtin (សូមមើល SHELL BUILTIN COMMANDS ខាងក្រោម) ។
OSTYPE
កំណត់ដោយស្វ័យប្រវត្តិទៅខ្សែអក្សរដែលពិពណ៌នាអំពីប្រព័ន្ធប្រតិបត្តិការដែល bash កំពុងប្រតិបត្តិ។ លំនាំដើមគឺប្រព័ន្ធអាស្រ័យ។
PIPESTATUS
អថេរអារេ (សូមមើល អារេ ខាងក្រោម) ដែលមានបញ្ជីតម្លៃស្ថានភាពចេញពីដំណើរការក្នុងបំពង់បង្ហូរផ្ទៃខាងមុខដែលបានប្រតិបត្តិថ្មីៗបំផុត (ដែលអាចមានតែពាក្យបញ្ជាតែមួយ) ។
PPID
លេខសម្គាល់ដំណើរការរបស់មេរបស់សែល។ អថេរនេះគឺបានតែអាន។
PWD
ថតការងារបច្ចុប្បន្នដែលបានកំណត់ដោយពាក្យបញ្ជា cd ។
RANDOM
រាល់ពេលប៉ារ៉ាម៉ែត្រនេះត្រូវបានយោងចំនួនលេខចៃដន្យរវាង 0 និង 32767 ត្រូវបានបង្កើត។ លំដាប់លេខចៃដន្យអាចត្រូវបានចាប់ផ្ដើមដោយផ្តល់តម្លៃទៅ RANDOM ។ ប្រសិនបើ RANDOM មិនត្រូវបានកំណត់វាបាត់បង់លក្ខណៈពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
REPLY
កំណត់ទៅបន្ទាត់នៃធាតុបញ្ចូលអានដោយពាក្យបញ្ជាដែលមានស្រាប់ អាន នៅពេលគ្មានអាគុយម៉ង់ត្រូវបានផ្គត់ផ្គង់។
វិនាទី
រាល់ពេលប៉ារ៉ាម៉ែត្រនេះត្រូវបានយោងចំនួននៃវិនាទីចាប់តាំងពីការហៅសែលត្រូវបានត្រឡប់។ ប្រសិនបើតម្លៃត្រូវបានកំណត់ទៅ SECONDS តម្លៃដែលបានត្រឡប់លើសេចក្តីយោងជាបន្តបន្ទាប់គឺចំនួនវិនាទីចាប់តាំងពីកិច្ចការបានបូកនឹងតម្លៃដែលបានកំណត់។ ប្រសិនបើ SECONDS មិនត្រូវបានកំណត់វាបាត់បង់លក្ខណៈពិសេសរបស់វាទោះបីជាវាត្រូវបានកំណត់ជាបន្តបន្ទាប់ក៏ដោយ។
SHELLOPTS
បញ្ជីបំបែកនៃជម្រើសនៃសែលដែលបានបំបែក។ ពាក្យនីមួយៗនៅក្នុងបញ្ជីគឺអាគុយម៉ង់ត្រឹមត្រូវសម្រាប់ជម្រើស -o ទៅពាក្យបញ្ជា builtin (សូមមើលពាក្យបញ្ជា SHELL BUILTIN ខាងក្រោម) ។ ជម្រើសដែលលេចឡើងនៅក្នុង SHELLOPTS គឺជាអ្នកដែលបានរាយការណ៍តាម ការកំណត់ ដោយ -o ។ ប្រសិនបើអថេរនេះស្ថិតនៅក្នុងបរិស្ថាននៅពេលដែល bash ចាប់ផ្តើមឡើងជម្រើសសែលនីមួយៗនៅក្នុងបញ្ជីនឹងត្រូវបានបើកមុនពេលអានឯកសារចាប់ផ្ដើមណាមួយ។ អថេរនេះគឺបានតែអាន។
SHLVL
បង្កើនដោយមួយរាល់ពេលដែលវត្ថុរបស់ bash ត្រូវបានចាប់ផ្ដើម។
UID
ពង្រីកទៅលេខសម្គាល់អ្នកប្រើរបស់អ្នកប្រើបច្ចុប្បន្នបានចាប់ផ្ដើមនៅពេលចាប់ផ្ដើមសែល។ អថេរនេះគឺបានតែអាន។
អថេរដូចខាងក្រោមត្រូវបានប្រើដោយសែល។ ក្នុងករណីខ្លះ bash ផ្ដល់តម្លៃលំនាំដើមទៅអថេរមួយ។ ករណីទាំងនេះត្រូវបានកត់សំគាល់ដូចខាងក្រោម។
BASH_ENV
ប្រសិនបើប៉ារ៉ាម៉ែត្រនេះត្រូវបានកំណត់នៅពេលដែល bash កំពុងដំណើរការស្គ្រីបសែលនោះតម្លៃរបស់វាត្រូវបានបកប្រែជាឈ្មោះឯកសារដែលមានពាក្យបញ្ជាដើម្បីចាប់ផ្ដើមសែលដូចនៅក្នុង ~ / ។ Bashash ។ តម្លៃនៃ BASH_ENV ត្រូវបានទទួលរងនូវការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធមុនពេលត្រូវបានបកប្រែជាឈ្មោះឯកសារ។ PATH មិនត្រូវបានប្រើដើម្បីស្វែងរកឈ្មោះឯកសារលទ្ធផល។
CDPATH
ផ្លូវស្វែងរកសម្រាប់ពាក្យបញ្ជា cd ។ នេះគឺជាបញ្ជីដែលបំបែកដោយសញ្ញា (:) ដែលសែលរកថតទិសដៅដែលបានបញ្ជាក់ដោយពាក្យបញ្ជា cd ។ តម្លៃគំរូគឺ "។ : ~: / usr" ។
COLUMNS
ប្រើដោយពាក្យបញ្ជា builtin ដើម្បីកំណត់ទទឹងស្ថានីយនៅពេលបោះពុម្ពបញ្ជីជ្រើសរើស។ កំណត់ដោយស្វ័យប្រវត្តិតាមការទទួល SIGWINCH ។
COMPREPLY
អារេអថេរដែល bash អានការបំពេញដែលអាចធ្វើបានដែលបង្កើតដោយមុខងារសែលមួយដែលត្រូវបានហៅដោយកន្លែងបំពេញដែលអាចកំណត់បាន (សូមមើល ការបំពេញកម្មវិធី ខាងក្រោម) ។
FCEDIT
កម្មវិធីនិពន្ធលំនាំដើមសម្រាប់ពាក្យបញ្ជា fc builtin ។
FIGNORE
បញ្ជីបច្ច័យដែលបំបែកដោយសញ្ញា (:) ដើម្បីមិនអើពើនៅពេលសម្តែងការ បំពេញឈ្មោះ ឯកសារ (សូមមើល READLINE ខាងក្រោម) ។ ឈ្មោះឯកសារដែលបច្ច័យមួយផ្គូផ្គងធាតុមួយនៅក្នុង FIGNORE ត្រូវបានដកចេញពីបញ្ជីឈ្មោះឯកសារដែលបានផ្គូរផ្គង។ តម្លៃគំរូគឺ ".o: ~" ។
GLOBIGNORE
បញ្ជីគំរូលំនាំដែលបំបែកដោយសញ្ញា (-) ដែលកំណត់និយមន័យសំណុំនៃឈ្មោះឯកសារដែលត្រូវមិនអើពើដោយការពង្រីកឈ្មោះផ្លូវ។ ប្រសិនបើឈ្មោះឯកសារដែលផ្គូផ្គងដោយលំនាំពង្រីកឈ្មោះផ្លូវឈ្មោះផ្គូផ្គងនឹងលំនាំមួយក្នុង GLOBIGNORE វាត្រូវបានយកចេញពីបញ្ជីនៃការប្រកួត។
តាមដាន
ប្រសិនបើកំណត់ទៅតម្លៃ អវិជ្ជមាន បន្ទាត់បន្ទាត់ដែលចាប់ផ្តើមដោយតួអក្សរ ដកឃ្លា មិនត្រូវបានបញ្ចូលនៅក្នុងបញ្ជីប្រវត្តិទេ។ ប្រសិនបើកំណត់ទៅតម្លៃនៃការមិន អើពើ បន្ទាត់ដែលមិនត្រូវគ្នានឹងបន្ទាត់ប្រវត្តិចុងក្រោយមិនត្រូវបានបញ្ចូលទេ។ តម្លៃ អវិជ្ជមាន រួមបញ្ចូលទាំងជម្រើសពីរ។ ប្រសិនបើមិនបានកំណត់ឬបើកំណត់ទៅតម្លៃណាមួយផ្សេងទៀតខាងលើបន្ទាត់ទាំងអស់ដែលអានដោយកម្មវិធីញែកត្រូវបានរក្សាទុកក្នុងបញ្ជីប្រវត្តិរូបដែលមានតម្លៃ HISTIGNORE ។ អនុគមន៍របស់អថេរនេះត្រូវបានជំនួសដោយ HISTIGNORE ។ បន្ទាត់ទីពីរនិងបន្តបន្ទាប់នៃពហុបន្ទាត់ពាក្យបញ្ជាមិនត្រូវបានសាកល្បងនិងត្រូវបានបន្ថែមទៅប្រវត្តិសាស្រ្តដោយមិនគិតពីតម្លៃនៃ HISTCONTROL ។
HISTFILE
ឈ្មោះឯកសារដែលរក្សាទុកក្នុងប្រវត្តិពាក្យបញ្ជា (សូមមើល ប្រវត្តិ ខាងក្រោម) ។ តម្លៃលំនាំដើមគឺ ~ / .bash_history ។ ប្រសិនបើមិនបានកំណត់ទេប្រវត្តិពាក្យបញ្ជាមិនត្រូវបានរក្សាទុកនៅពេលដែលសែលអន្តរកម្មចេញ។
HISTFILESIZE
ចំនួនបន្ទាត់អតិបរមាដែលមានក្នុងឯកសារប្រវត្តិ។ នៅពេលអថេរនេះត្រូវបានផ្តល់តម្លៃឯកសារប្រវត្តិត្រូវបានកាត់ឱ្យខ្លីប្រសិនបើចាំបាច់ដើម្បីមិនមានច្រើនជាងចំនួនបន្ទាត់នោះ។ តម្លៃលំនាំដើមគឺ 500 ។ ឯកសារប្រវត្តិត្រូវបានកាត់បន្ថយទំហំនេះបន្ទាប់ពីសរសេរវានៅពេលដែលសែលអន្តរកម្មចេញ។
HISTIGNORE
បញ្ជីរាយឈ្មោះលំនាំដែលបែងចែកដោយសញ្ញាពហុវចនៈត្រូវបានប្រើដើម្បីសម្រេចថាតើបន្ទាត់ពាក្យបញ្ជាមួយណាគួរត្រូវបានរក្សាទុកនៅលើបញ្ជីប្រវត្តិ។ លំនាំនីមួយៗត្រូវបានបោះយុថ្កានៅដើមបន្ទាត់ហើយត្រូវតែផ្គូផ្គងបន្ទាត់ពេញលេញ (គ្មាន " * " ខាងក្រៅត្រូវបានបន្ថែមខាងចុង) ។ លំនាំនីមួយៗត្រូវបានធ្វើតេស្តប្រឆាំងនឹងបន្ទាត់បន្ទាប់ពីការត្រួតពិនិត្យដែលបានបញ្ជាក់ដោយ HISTCONTROL ត្រូវបានអនុវត្ត។ បន្ថែមទៅតួអក្សរលំនាំដើមផ្គូផ្គងតួអក្សរផ្គូផ្គងបន្ទាត់ប្រវត្តិមុន។ ` & 'អាចត្រូវបានគេចចេញដោយប្រើសញ្ញា (\\) ។ សញ្ញាបៀត្រូវបានដកចេញមុនពេលប៉ុនប៉ងប្រកួត។ បន្ទាត់ទីពីរនិងបន្តបន្ទាប់នៃពាក្យបញ្ជាសមាសធាតុច្រើនបន្ទាត់មិនត្រូវបានសាកល្បងទេហើយត្រូវបានបន្ថែមទៅប្រវត្តិដោយមិនគិតពីតំលៃនៃ HISTIGNORE ។
HISTSIZE
ចំនួនពាក្យបញ្ជាដែលត្រូវចាំក្នុងប្រវត្តិពាក្យបញ្ជា (សូមមើល ប្រវត្តិ នៅខាងក្រោម) ។ តម្លៃលំនាំដើមគឺ 500 ។
ទំព័រដើម
ថតផ្ទះរបស់អ្នកប្រើបច្ចុប្បន្ន។ អាគុយម៉ង់លំនាំដើមសម្រាប់ពាក្យបញ្ជា cd builtin ។ តម្លៃរបស់អថេរនេះត្រូវបានប្រើផងដែរនៅពេលសម្តែងការពង្រីក tilde ។
HOSTFILE
មានឈ្មោះរបស់ឯកសារនៅក្នុងទ្រង់ទ្រាយដូចគ្នានឹង / etc / hosts ដែលគួរត្រូវបានអាននៅពេលសែលត្រូវការបំពេញឈ្មោះម៉ាស៊ីន។ បញ្ជីនៃការបំពេញឈ្មោះម៉ាស៊ីនដែលអាចធ្វើបានអាចត្រូវបានផ្លាស់ប្តូរខណៈពេលដែលសែលកំពុងរត់។ ការបំពេញឈ្មោះម៉ាស៊ីនក្រោយពេលក្រោយត្រូវបានគេព្យាយាមបន្ទាប់ពីតម្លៃត្រូវបានផ្លាស់ប្តូរ, bash បន្ថែមមាតិកានៃឯកសារថ្មីទៅបញ្ជីដែលមានស្រាប់។ ប្រសិនបើ HOSTFILE ត្រូវបានកំណត់ប៉ុន្តែគ្មានតម្លៃ bash ព្យាយាមអាន / etc / hosts ដើម្បីទទួលបានបញ្ជីនៃការបំពេញឈ្មោះម៉ាស៊ីនដែលអាចធ្វើបាន។ នៅពេល HOSTFILE មិនត្រូវបានកំណត់បញ្ជីឈ្មោះម៉ាស៊ីនត្រូវបានសម្អាត។
IFS
សញ្ញាបំបែកវាលខាងក្នុង ដែលត្រូវបានប្រើសម្រាប់បំបែកពាក្យបន្ទាប់ពីការពង្រីកនិងបំបែកបន្ទាត់ទៅជាពាក្យដែលមានពាក្យបញ្ជាដែលបាន អាន ។ តម្លៃលំនាំដើមគឺ `` <ចន្លោះ> <ថេប> <បន្ទាត់ថ្មី> '' ។
IGNOREEOF
ត្រួតពិនិត្យសកម្មភាពរបស់សែលអន្តរកម្មលើវិក័យប័ត្រ EOF ដែលជាធាតុបញ្ចូលតែមួយគត់។ បើកំណត់តម្លៃគឺជាលេខនៃតួអក្សរ EOF តៗគ្នាដែលត្រូវបានបញ្ចូលជាតួអក្សរដំបូងនៅលើបន្ទាត់បញ្ចូលមុនពេលចេញ។ ប្រសិនបើអថេរមានប៉ុន្តែមិនមានតម្លៃជាលេខឬគ្មានតម្លៃនោះតម្លៃលំនាំដើមគឺ 10 ។ ប្រសិនបើវាមិនមាន EOF មានន័យថាបញ្ចប់ការបញ្ចូលទៅសែល។
INPUTRC
ឈ្មោះឯកសារសម្រាប់ឯកសារចាប់ផ្តើម អានបន្ទាត់ ដោយបដិសេធលំនាំដើម ~ / ។ inputrc (សូមមើល READLINE ខាងក្រោម) ។
LANG
ប្រើដើម្បីកំណត់ប្រភេទមូលដ្ឋានសម្រាប់ប្រភេទណាមួយដែលមិនត្រូវបានជ្រើសជាពិសេសជាមួយអថេរដែលចាប់ផ្ដើមដោយ LC ។
LC_ALL
អថេរនេះបដិសេធលើតម្លៃនៃ LANG និងអថេរ LC_ ផ្សេងដែលបញ្ជាក់ប្រភេទមូលដ្ឋានមួយ។
LC_COLLATE
អថេរនេះកំណត់លំដាប់តម្រៀបដែលត្រូវបានប្រើនៅពេលតម្រៀបលទ្ធផលនៃការពង្រីកឈ្មោះផ្លូវនិងកំណត់ឥរិយាបថនៃកន្សោមជួរថ្នាក់សមមូលនិងលំដាប់បញ្ច្រាស់ក្នុងការពង្រីកឈ្មោះផ្លូវនិងការផ្គូផ្គងលំនាំ។
LC_CTYPE
អថេរនេះកំណត់ការបកស្រាយតួអក្សរនិងឥរិយាបថរបស់ថ្នាក់តួអក្សរក្នុងការពង្រីកឈ្មោះផ្លូវនិងការផ្គូផ្គងលំនាំ។
LC_MESSAGES
អថេរនេះកំណត់ទីតាំងដែលត្រូវប្រើដើម្បីបកប្រែខ្សែអក្សរដែលបានដកស្រង់ទ្វេដងដោយមុន $ ។
LC_NUMERIC
អថេរនេះកំណត់ប្រភេទមូលដ្ឋានដែលប្រើសម្រាប់ធ្វើទ្រង់ទ្រាយលេខ។
បន្ទាត់
ត្រូវបានប្រើដោយពាក្យបញ្ជា builtin ជ្រើស ដើម្បីកំណត់ប្រវែងជួរឈរសម្រាប់បញ្ជីជម្រើសបោះពុម្ព។ កំណត់ដោយស្វ័យប្រវត្តិតាមការទទួល SIGWINCH ។
ប្រសិនបើប៉ារ៉ាម៉ែត្រនេះត្រូវបានកំណត់ទៅជាឈ្មោះឯកសារហើយអថេរ MAILPATH មិនត្រូវបានកំណត់ bash ផ្តល់ព័ត៌មានដល់អ្នកប្រើនៃការមកដល់នៃសំបុត្រនៅក្នុងឯកសារដែលបានបញ្ជាក់។
MAILCHECK
បញ្ជាក់ចំនួនដង (ជាវិនាទី) bash ពិនិត្យសំបុត្រ។ លំនាំដើមគឺ 60 វិនាទី។ នៅពេលដែលវាដល់ពេលពិនិត្យសំបុត្រសំបុត្រសែលនឹងធ្វើដូច្នេះមុនពេលបង្ហាញប្រអប់បញ្ចូលចម្បង។ ប្រសិនបើអថេរនេះមិនត្រូវបានកំណត់ឬកំណត់ទៅតម្លៃដែលមិនមែនជាលេខធំជាងឬស្មើសូន្យសែលបិទការត្រួតពិនិត្យសំបុត្រ។
MAILPATH
បញ្ជីឈ្មោះឯកសារដែលបែងចែកដោយសញ្ញាពហុកោណនឹងត្រូវបានត្រួតពិនិត្យសម្រាប់សំបុត្រ។ សារដែលត្រូវបានបោះពុម្ពនៅពេលសំបុត្រមកដល់ក្នុងឯកសារជាក់លាក់អាចបញ្ជាក់ដោយបំបែកឈ្មោះឯកសារពីសារដែលមាន ``? '។ នៅពេលប្រើក្នុងអត្ថបទនៃសារនោះ _ _ ពង្រីកទៅឈ្មោះឯកសារសំបុត្របច្ចុប្បន្ន។ ឧទាហរណ៍:
MAILPATH = '/ var / mail / bfox? អ្នកមានសំបុត្រ ": ~ / shell-mail? $ _ មានអ៊ីមែល!' '
Bash ផ្គត់ផ្គង់តម្លៃលំនាំដើមសម្រាប់អថេរនេះប៉ុន្តែទីតាំងរបស់ឯកសារសំបុត្រអ្នកប្រើប្រាស់ដែលវាប្រើគឺប្រព័ន្ធពឹងផ្អែក (ឧ។ / var / mail / $ USER ) ។
OPTERR
ប្រសិនបើបានកំណត់ទៅតម្លៃ 1 bash បង្ហាញសារកំហុសដែលបង្កើតដោយពាក្យបញ្ជា builtopts builtin (សូមមើល SHELL BUILTIN COMMANDS ខាងក្រោម) ។ OPTERR ត្រូវបានចាប់ផ្ដើមជា 1 ពេលដែលសែលត្រូវបានហៅឬស្គ្រីបសែលត្រូវបានប្រតិបត្តិ។
PATH
ផ្លូវស្វែងរកសម្រាប់ពាក្យបញ្ជា។ វាជាបញ្ជីបញ្ជីបំបែកដោយសញ្ញាពហុកោណដែលសែលមើលពាក្យបញ្ជា (សូមមើលប្រតិបត្តិ COMMAND ខាងក្រោម) ។ ផ្លូវលំនាំដើមគឺប្រព័ន្ធអាស្រ័យហើយត្រូវបានកំណត់ដោយអ្នកគ្រប់គ្រងដែលដំឡើង bash ។ តម្លៃជាទូទៅគឺ `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: '' ។
POSIXLY_CORRECT
ប្រសិនបើអថេរនេះស្ថិតក្នុងបរិយាកាសនៅពេលដែលចាប់ផ្តើម bash ចាប់ផ្ដើមសែលនឹងចូលក្នុង posix mode មុនពេលអានឯកសារចាប់ផ្តើមនៅពេលដែលជម្រើសការដាក់ ស្នើ --posix ត្រូវបានផ្គត់ផ្គង់។ ប្រសិនបើវាត្រូវបានកំណត់ខណៈពេលសែលដំណើរការនោះ bash បើក របៀប posix ដូចជាប្រសិនបើពាក្យបញ្ជា set -o posix ត្រូវបានប្រតិបត្តិ។
PROMPT_COMMAND
បើកំណត់តម្លៃត្រូវបានប្រតិបត្តិជាពាក្យបញ្ជាមុនពេលចេញសេចក្តីជូនដំណឹងសំខាន់ៗនីមួយៗ។
PS1
តម្លៃនៃប៉ារ៉ាម៉ែត្រនេះត្រូវបានពង្រីក (មើល PROMPTING ខាងក្រោម) និងត្រូវបានប្រើជាខ្សែអក្សរប្រអប់បញ្ចូលដំបូង។ តម្លៃលំនាំដើមគឺ `` \ s- \ v \ $ '' ។
PS2
តម្លៃនៃប៉ារ៉ាម៉ែត្រនេះត្រូវបានពង្រីកជាមួយ PS1 និងត្រូវបានប្រើជាខ្សែអក្សរប្រអប់បញ្ចូលទីពីរ។ លំនាំដើមគឺ `` > '' ។
PS3
តម្លៃនៃប៉ារ៉ាម៉ែត្រនេះត្រូវបានប្រើជាប្រអប់បញ្ចូលសម្រាប់ពាក្យបញ្ជា ជ្រើសរើស (សូមមើល SHELL GRAMMAR ខាងលើ) ។
PS4
តម្លៃនៃប៉ារ៉ាម៉ែត្រនេះត្រូវបានពង្រីកជាមួយ PS1 ហើយតម្លៃត្រូវបានបោះពុម្ពមុនពេលបង្ហាញពាក្យបញ្ជា ក្តារ នីមួយៗក្នុងកំឡុងពេលដំណើរការ។ តួអក្សរដំបូងនៃ PS4 ត្រូវបានចម្លងច្រើនដងក្នុងករណីចាំបាច់ដើម្បីចង្អុលបង្ហាញកម្រិតនៃការចង្អុលបង្ហាញច្រើន។ លំនាំដើមគឺ `` + '' ។
TIMEFORMAT
តម្លៃរបស់ប៉ារ៉ាម៉ែត្រនេះត្រូវបានប្រើជាខ្សែអក្សរទ្រង់ទ្រាយបញ្ជាក់ពីរបៀបដែលព័ត៌មានពេលវេលាសម្រាប់បំពង់ដែលត្រូវបានដាក់បុព្វបទដោយពាក្យដែលបានបម្រុងទុកត្រូវបានបង្ហាញ។ តួអក្សរ % បង្ហាញស៊េរី escape ដែលត្រូវបានពង្រីកទៅជាតម្លៃពេលវេលាឬព័ត៌មានផ្សេងទៀត។ លំដាប់អក្ខរកម្មនិងអត្ថន័យរបស់ពួកគេមានដូចខាងក្រោម: ដង្កៀបតំណាងឱ្យផ្នែកស្រេចចិត្ត។
%%
% ព្យញ្ជនៈ។
% [ p ] [l] R
ពេលវេលាកន្លងមកគិតជាវិនាទី។
% [ p ] [l] U
ចំនួនវិនាទីនៃស៊ីភីយូដែលបានចំណាយក្នុងរបៀបអ្នកប្រើ។
% [ p ] [l] S
ចំនួនវិនាទីស៊ីភីយូដែលបានចំណាយក្នុងរបៀបប្រព័ន្ធ។
% P
ភាគរយស៊ីភីយូបានគណនាជា (% U +% S) /% R ។
p ស្រេចចិត្តគឺជាខ្ទង់បញ្ជាក់ពី ភាពជាក់លាក់ ចំនួននៃតួលេខប្រភាគបន្ទាប់ពីចំណុចទសភាគមួយ។ តំលៃ 0 បង្កអោយគ្មានចំនុចទសភាគឬប្រភាគទៅជាលទ្ធផល។ នៅច្រើនបំផុតបីកន្លែងបន្ទាប់ពីចំណុចទសភាគអាចត្រូវបានបញ្ជាក់។ តម្លៃនៃ p ធំជាង 3 ត្រូវបានប្តូរទៅជា 3 ។ ប្រសិនបើ p មិនត្រូវបានបញ្ជាក់តម្លៃ 3 ត្រូវបានប្រើ។
ជម្រើស l បញ្ជាក់ទ្រង់ទ្រាយវែងជាងរួមទាំងនាទីនៃទម្រង់ MM m SS ។ FF s ។ តម្លៃរបស់ p កំណត់ថាតើប្រភាគត្រូវបានរួមបញ្ចូលឬក៏អត់។
ប្រសិនបើអថេរនេះមិនត្រូវបានកំណត់, bash ដើរតួជាប្រសិនបើវាមានតម្លៃ $ '\ n ពិត \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' ។ ប្រសិនបើតម្លៃមិនត្រឹមត្រូវនោះគ្មានព័ត៌មានអំពីពេលវេលាទេ។ បន្ទាត់ថ្មីនៅពីក្រោយត្រូវបានបន្ថែមនៅពេលខ្សែអក្សរទ្រង់ទ្រាយត្រូវបានបង្ហាញ។
TMOUT
ប្រសិនបើបានកំណត់ទៅតម្លៃធំជាងសូន្យ TMOUT ត្រូវបានចាត់ទុកជាពេលវេលាលំនាំដើមសម្រាប់ខ្សែ អក្សរអាន ។ ពាក្យបញ្ជា ជ្រើស បញ្ចប់ប្រសិនបើការបញ្ចូលមិនមកដល់បន្ទាប់ពី TMOUT វិនាទីនៅពេលបញ្ចូលពីស្ថានីយ។ នៅក្នុងសែលអន្តរសកម្មតម្លៃត្រូវបានបកប្រែជាចំនួនវិនាទីដើម្បីរង់ចាំសម្រាប់ការបញ្ចូលបន្ទាប់ពីចេញការរំលឹកបឋម។ Bash បញ្ចប់បន្ទាប់ពីរង់ចាំចំនួនវិនាទីនោះប្រសិនបើការបញ្ចូលមិនមកដល់។
auto_resume
អថេរនេះគ្រប់គ្រងថាតើសែលធ្វើអន្តរកម្មជាមួយអ្នកប្រើនិងការគ្រប់គ្រងការងារ។ ប្រសិនបើអថេរនេះត្រូវបានកំណត់ពាក្យបញ្ជាពាក្យសាមញ្ញ ៗ ដោយគ្មានការប្តូរទិសត្រូវបានចាត់ទុកជាបេក្ខជនសម្រាប់ការបន្តការងារដែលមានស្រាប់។ មិនមានភាពមិនច្បាស់លាស់ទេ។ ប្រសិនបើមានការងារច្រើនជាងមួយដែលចាប់ផ្តើមជាមួយខ្សែអក្សរដែលបានបញ្ចូលការងារដែលបានចូលថ្មីៗបំផុតត្រូវបានជ្រើស។ ឈ្មោះ នៃការងារដែលបានបញ្ឈប់នៅក្នុងបរិបទនេះគឺជាបន្ទាត់ពាក្យបញ្ជាដែលប្រើដើម្បីចាប់ផ្តើមវា។ ប្រសិនបើកំណត់ទៅតម្លៃ ពិតប្រាកដ ខ្សែអក្សរដែលបានផ្តល់ត្រូវតែផ្គូផ្គងឈ្មោះនៃការងារដែលបានឈប់មួយយ៉ាងពិតប្រាកដ; ប្រសិនបើកំណត់ទៅ ខ្សែ អក្សរខ្សែអក្សរត្រូវបានផ្គូផ្គងនឹងខ្សែអក្សររងនៃឈ្មោះនៃការងារដែលបានឈប់។ តម្លៃ ខ្សែអក្សររង ផ្ដល់នូវមុខងារស្រដៀងទៅនឹង %? លេខសម្គាល់ការងារ (សូមមើលការ ត្រួតពិនិត្យការងារ ខាងក្រោម) ។ ប្រសិនបើកំណត់ទៅតម្លៃផ្សេងៗទៀតខ្សែអក្សរដែលត្រូវបានផ្គត់ផ្គង់ត្រូវតែជាបុព្វបទរបស់ឈ្មោះការងារដែលឈប់។ នេះផ្តល់នូវមុខងារស្រដៀងទៅនឹង % identifier ការងារ។
histchars
តួអក្សរពីរឬបីដែលគ្រប់គ្រងការពង្រីកប្រវត្តិនិងសញ្ញាសម្ងាត់ (សូមមើលការពង្រីក ប្រវត្តិ ខាងក្រោម) ។ តួអក្សរដំបូងគឺតួអក្សរ ពង្រីកប្រវត្តិ តួអក្សរដែលបង្ហាញពីការចាប់ផ្តើមនៃការពង្រីកប្រវត្តិសាស្រ្តជាធម្មតា ! '។ តួអក្សរទីពីរគឺតួអក្សរ ជំនួសរហ័ស ដែលត្រូវបានប្រើជាអក្សរកាត់សម្រាប់ការដំណើរការពាក្យបញ្ជាមុនដែលបានបញ្ចូលឡើងវិញដោយជំនួសខ្សែអក្សរមួយផ្សេងទៀតសម្រាប់ពាក្យបញ្ជា។ លំនាំដើមគឺ ` ^ '។ តួអក្សរទីបីស្រេចចិត្តជាតួអក្សរដែលបង្ហាញថាបន្ទាត់ដែលនៅសល់គឺជាមតិយោបល់នៅពេលរកឃើញជាតួអក្សរដំបូងនៃពាក្យធម្មតាជា ` # '។ តួអក្សរអត្ថាធិប្បាយប្រវត្តិបណ្តាលឱ្យផ្លាស់ប្តូរប្រវត្តិសាស្រ្តដែលត្រូវបានរំលងសម្រាប់ពាក្យដែលនៅសល់នៅលើបន្ទាត់។ វាមិនចាំបាច់បណ្តាលឱ្យកម្មវិធីញែកសែលដើម្បីព្យាបាលនៅសល់នៃបន្ទាត់ជាមតិយោបល់។
អារេ
Bash ផ្តល់ អព្ភអរអាណុយ មួយវិមាត្រ។ អថេរណាមួយអាចត្រូវបានប្រើជាអារេមួយ។ ការប្រកាស សាងសង់នឹងប្រកាសអារេយ៉ាងច្បាស់។ មិនមានដែនកំណត់អតិបរមាលើទំហំនៃអារេនិងតម្រូវការណាមួយដែលសមាជិកត្រូវបានដាក់លិបិក្រមឬត្រូវបានផ្តល់ឱ្យជាប់គ្នាទេ។ អារេត្រូវបានធ្វើលិបិក្រមដោយប្រើចំនួនគត់និងមានមូលដ្ឋានសូន្យ។
អារេមួយត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិប្រសិនបើអថេរត្រូវបានកំណត់ឱ្យប្រើ ឈ្មោះ វាក្យសម្ពន្ធ [ អក្សរតូច ] = តម្លៃ ។ អក្សរតូចក្រោម ត្រូវបានចាត់ទុកជាកន្សោមនព្វន្ធដែលត្រូវវាយតម្លៃទៅលេខធំជាងឬស្មើ។ ដើម្បីប្រកាសអារេយ៉ាងច្បាស់សូមប្រើ declare- name (សូមមើល ពាក្យបញ្ជា SHELL BUILTIN ខាងក្រោម) ។ ប្រកាស - ឈ្មោះ [ អក្សរតូចក្រោម ] ក៏ត្រូវបានទទួលយកដែរ។ អក្សរតូចក្រោម ត្រូវបានមិនអើពើ។ គុណលក្ខណៈអាចត្រូវបានបញ្ជាក់សម្រាប់អថេរអារេមួយដោយប្រើមូលដ្ឋានដែលបាន ប្រកាស និងបាន អាន តែប៉ុណ្ណោះ។ គុណលក្ខណៈនីមួយៗត្រូវបានអនុវត្តចំពោះសមាជិកទាំងអស់នៃអារេមួយ។
អារេត្រូវបានកំណត់ឱ្យប្រើការដាក់បញ្ចូលគ្នានៃ ឈ្មោះ សំណុំបែបបទ = ( តម្លៃ លេខ 1 ... តម្លៃ n ) ដែល តម្លៃ នីមួយៗគឺសំណុំបែបបទ [ អក្សរតូចក្រោម ] = ខ្សែអក្សរ ។ មានតែ ខ្សែអក្សរ ប៉ុណ្ណោះដែលត្រូវបានទាមទារ។ ប្រសិនបើវង់ក្រចកស្រេចនិងអក្សរតូចក្រោមត្រូវបានផ្គត់ផ្គង់នោះលិបិក្រមនោះត្រូវបានផ្តល់ឱ្យ; បើមិនដូច្នោះទេលិបិក្រមរបស់ធាតុដែលបានផ្តល់គឺជាលិបិក្រមចុងក្រោយដែលបានកំណត់ដោយសេចក្តីថ្លែងការណ៍បូកមួយ។ ការបង្កើតលិបិក្រមចាប់ផ្តើមពីសូន្យ។ វាក្យសម្ព័ន្ធនេះត្រូវបានទទួលយកដោយ ការប្រកាស សាងសង់។ ធាតុអារ៉េនីមួយៗអាចត្រូវបានកំណត់ឱ្យប្រើ ឈ្មោះ [អាប់បែក] = វាក្យសម្ពន្ធ តម្លៃដែលបាន ណែនាំខាងលើ។
ការសាងសង់ មិន ត្រូវបានប្រើដើម្បីបំផ្លាញអារេ។ កំណត់ ឈ្មោះ [ អុហ្វសិត ] បំផ្លាញធាតុអារេនៅតាមអំបូរសន្ទស្សន៍។ មិនកំណត់ ឈ្មោះ ដែល ឈ្មោះ ជាអារ៉េឬ មិនកំណត់ ឈ្មោះ [ អក្សរតូចក្រោម ] ដែល អក្សរតូច * * ឬ @ ដកអារេទាំងមូល។
ការប្រកាស មូលដ្ឋាន និង អាន តែម្នាក់ឯងនីមួយៗទទួលយកជម្រើស -a ដើម្បីបញ្ជាក់អារេមួយ។ អាន builtin ទទួលយកជម្រើស -a ដើម្បីកំណត់បញ្ជីពាក្យដែលអានពីការបញ្ចូលស្តង់ដារទៅអារ៉េ។ សំណុំ និង ប្រកាស សាងសង់បង្ហាញតម្លៃអារេក្នុងវិធីដែលអនុញ្ញាតឱ្យពួកវាត្រូវបានប្រើឡើងវិញជាកិច្ចការ។
EXPANSION
ការពង្រីកត្រូវបានអនុវត្តនៅលើបន្ទាត់ពាក្យបញ្ជាបន្ទាប់ពីវាត្រូវបានបំបែកទៅជាពាក្យ។ មានការពង្រីកចំនួនប្រាំពីរប្រភេទគឺការពង្រីក រន្ធដោតការពង្រីក និមិត្តសញ្ញា និងការពង្រីកអថេរ ជំនួសពាក្យបញ្ជាការ ពង្រីកនព្វន្ធការ បំបែកពាក្យ និង ការពង្រីកឈ្មោះផ្លូវ ។
លំដាប់នៃការពង្រីកគឺ: ការពង្រីករន្ធដោតការពង្រីករដិបរដុបប៉ារ៉ាម៉ែត្រអថេរនិងការពង្រីកនព្វន្ធនិងការជំនួសពាក្យបញ្ជា (ធ្វើនៅខាងឆ្វេងទៅស្តាំ) ការបំបែកពាក្យនិងការពង្រីកឈ្មោះផ្លូវ។
នៅលើប្រព័ន្ធដែលអាចគាំទ្រវាមានការពង្រីកបន្ថែមដែលអាចរកបាន: ដំណើរការជំនួស ។
ការពង្រីកដោត
ការពង្រីករណប គឺជាយន្តការដែលខ្សែអក្សរដែលអាចបំពានបានអាចត្រូវបានបង្កើត។ យន្ដការនេះស្រដៀងទៅនឹង ការពង្រីកឈ្មោះផ្លូវ ប៉ុន្តែឈ្មោះឯកសារដែលបង្កើតមិនត្រូវការទេ។ លំនាំដែលត្រូវបានពង្រីកបានយកសំណុំបែបបទនៃ បុព្វកថា ស្រេចចិត្តដោយបន្តបន្ទាប់នៃស៊េរីបំបែកដោយសញ្ញាក្បៀសរវាងគូនៃដង្កៀបមួយដែលបន្តដោយ សរសរសរសែប តាមជម្រើស។ បុព្វកថានេះត្រូវបានដាក់បុព្វបទទៅខ្សែអក្សរនីមួយៗដែលមាននៅក្នុងដង្កៀបហើយអនុសរណៈត្រូវបានបន្ថែមទៅខ្សែអក្សរលទ្ធផលនីមួយៗពង្រីកពីឆ្វេងទៅស្តាំ។
ការពង្រីករទ្វេអាចត្រូវបានដាក់បញ្ចូលគ្នា។ លទ្ធផលនៃខ្សែអក្សរពង្រីកនីមួយៗមិនត្រូវបានតម្រៀបទេ។ ពីឆ្វេងទៅស្តាំត្រូវបានរក្សាទុក។ ឧទាហរណ៍ { d, c, b } e ពង្រីកទៅ 'ade ace abe' ។
ការពង្រីករណបត្រូវបានអនុវត្តមុនពេលការពង្រីកណាមួយផ្សេងទៀតនិងតួអក្សរពិសេសចំពោះការពង្រីកផ្សេងទៀតត្រូវបានរក្សាទុកក្នុងលទ្ធផល។ វាគឺជាអត្ថបទយ៉ាងតឹងរឹង។ Bash មិនអនុវត្តការបកស្រាយវាក្យសម្ព័ន្ធណាមួយទៅបរិបទនៃការពង្រីកឬអត្ថបទរវាងដង្កៀបទេ។
ការសាងសង់នេះត្រូវបានប្រើជាទូទៅជាអក្ខរាវិរុទ្ធនៅពេលបុព្វបទទូទៅនៃខ្សែដែលត្រូវបង្កើតគឺវែងជាងឧទាហរណ៍ខាងលើ:
mkdir / usr / local / src / bash / {ចាស់, ថ្មី, កំហុស, កំហុស}
ឬ
chown root /usr/{ucb/{exeded},lib/{ex? .?*, how_ex}}
ការពង្រីករណបបង្ហាញពីភាពមិនឆបគ្នាបន្តិចជាមួយនឹងកំណែប្រវត្តិសាស្ត្ររបស់ sh ។ sh មិនចាត់ទុកការបើកឬបិទដង្កៀបជាពិសេសនៅពេលដែលវាលេចឡើងជាផ្នែកនៃពាក្យហើយការពារវានៅក្នុងលទ្ធផល។ Bash នឹងដកដង្កៀបចេញពីពាក្យដែលជាលទ្ធផលនៃការពង្រីករណប។ ឧទាហរណ៍ពាក្យដែលបញ្ចូលទៅ sh ជា ឯកសារ {1,2} លេចឡើងដូចគ្នាក្នុងលទ្ធផល។ ពាក្យដូចគ្នាគឺជាលទ្ធផលជា file1 file2 បន្ទាប់ពីពង្រីកដោយ bash ។ ប្រសិនបើភាពឆបគ្នាយ៉ាងតឹងរឹងជាមួយ sh ត្រូវបានគេចាប់ផ្តើម bash ជាមួយជម្រើស B ឬបិទការពង្រីករ ណសិរីដោយ ជម្រើស B ទៅពាក្យបញ្ជា កំណត់ (សូមមើលបញ្ជា SHELL BUILTIN ខាងក្រោម) ។
ការពង្រីក Tilde
ប្រសិនបើពាក្យមួយចាប់ផ្តើមដោយតួអក្សរសញ្ញា (\ ' ~ ') ដែលគ្មានតួអក្សរ (' ~ ') តួអក្សរទាំងអស់ដែលនៅមុនសញ្ញាដកដែលមិនបានអធិប្បាយដំបូង (ឬតួអក្សរទាំងអស់ប្រសិនបើមិនមានសញ្ញាទេដែលត្រូវបានដកចេញ) ត្រូវបានចាត់ទុកថាជា សញ្ញាបុព្វបទ ។ ប្រសិនបើគ្មានតួអក្សរនៅក្នុងសញ្ញា - សញ្ញាបុព្វបទត្រូវបានដកស្រង់តួអក្សរដែលមានសញ្ញាសម្គាល់ប្រហាក់ប្រហែលបន្ទាប់ពីសញ្ញាសម្គាល់ត្រូវបានចាត់ទុកជា ឈ្មោះចូល ។ ប្រសិនបើឈ្មោះចូលនេះជាខ្សែអក្សរទទេ, សញ្ញាព្រួញត្រូវបានជំនួសដោយតម្លៃនៃប៉ារ៉ាម៉ែត្រសែល HOME ។ ប្រសិនបើ HOME មិនត្រូវបានកំណត់ថត home របស់អ្នកប្រើប្រាស់ដែលដំណើរការ Shell ត្រូវបានជំនួសជំនួសវិញ។ បើមិនដូច្នោះទេដូរបុព្វបទត្រូវបានជំនួសដោយថតផ្ទះដែលភ្ជាប់ជាមួយឈ្មោះចូលដែលបានបញ្ជាក់។
ប្រសិនបើ tilde បុព្វបទគឺជា `~ + 'តម្លៃនៃអថេរសែល PWD ជំនួសដបុរៈបុព្វបទ។ ប្រសិនបើ tilde បុព្វបទគឺ `` - ', តម្លៃនៃអថេរ shell OLDPWD បើវាត្រូវបានកំណត់ត្រូវបានជំនួស។ បើតួអក្សរដែលនៅពីក្រោយសញ្ញាស្នេហ៍ជាបុព្វបទមានលេខ N ជាបុព្វបទដែលបានដាក់បុព្វបទដោយ `+ 'ឬ` -' បុព្វបទ tilde ត្រូវបានជំនួសដោយធាតុដែលទាក់ទងពីជង់ថតព្រោះវានឹងត្រូវបានបង្ហាញ។ ដោយ dirs builtin ត្រូវបានហៅដោយសញ្ញាសម្គាល់ - ជាបុព្វបទ។ បើតួអក្សរដែលនៅពីក្រោយសញ្ញាសម្គាល់នៅក្នុងសញ្ញា - បុព្វបទមានលេខដែលមិនមាន `+ 'ឬ` -' នាំមុខ `` 'ត្រូវបានសន្មត។
ប្រសិនបើឈ្មោះចូលមិនត្រឹមត្រូវឬការពង្រីកការមើលកុនបរាជ័យពាក្យមិនផ្លាស់ប្តូរទេ។
ការផ្លាស់ប្តូរអថេរនីមួយៗត្រូវបានធីកសម្រាប់បុព្វបទ Tilde មិនទាន់ចប់ភ្លាមៗដូចខាងក្រោម : ឬ = ។ ក្នុងករណីទាំងនេះការរីកដុះដាលក៏ត្រូវបានអនុវត្តផងដែរ។ ជាលទ្ធផលគេអាចប្រើឈ្មោះឯកសារដែលមានសញ្ញាតូចៗនៅក្នុងកិច្ចការទៅ PATH , MAILPATH និង CDPATH ហើយសែលផ្តល់តម្លៃពង្រីក។
ការពង្រីកប៉ារ៉ាម៉ែត្រ
តួអក្សរ ' $ ' ណែនាំការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជាឬការពង្រីកនព្វន្ធ។ ឈ្មោះប៉ារ៉ាម៉ែត្រឬនិមិត្តសញ្ញាដែលត្រូវពង្រីកអាចត្រូវបានដាក់ក្នុងដង្កៀបដែលជាជម្រើសប៉ុន្តែប្រើដើម្បីការពារអថេរដែលត្រូវបានពង្រីកពីតួអង្គភ្លាមៗបន្ទាប់ពីវាដែលអាចត្រូវបានបកប្រែជាផ្នែកនៃឈ្មោះ។
នៅពេលដង្កៀបត្រូវបានប្រើការបញ្ចប់ការផ្គូផ្គងជាទ្វេដងគឺ `` '' 'ដំបូងមិនត្រូវបានគេចចេញពីសញ្ញាឆេកឬនៅក្នុងខ្សែអក្សរដែលដកស្រង់ហើយមិនមែននៅក្នុងការពង្រីកនព្វន្តការជំនួសពាក្យឬការពង្រីកប៉ារ៉ាម៉ែត្រទេ។
តម្លៃរបស់ ប៉ារ៉ាម៉ែត្រ ត្រូវបានជំនួស។ ដង្កៀបត្រូវបានទាមទារនៅពេល ប៉ារ៉ាម៉ែត្រ ជា ប៉ារ៉ាម៉ែត្រ តាមទីតាំងដែលមានច្រើនជាងមួយឬនៅពេល ប៉ារ៉ាម៉ែត្រ ត្រូវបានបន្តដោយតួអក្សរដែលមិនត្រូវបានបកប្រែជាផ្នែកនៃឈ្មោះរបស់វា។
ក្នុងករណីនីមួយៗខាងក្រោម ពាក្យ គឺស្ថិតនៅលើការពង្រីករដិបរដុបការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធ។ នៅពេលមិនបានសម្តែងការពង្រីកខ្សែរស្រោល, សាកល្បង bash សម្រាប់ប៉ារ៉ាម៉ែត្រដែលមិនត្រូវបានកំណត់ឬ null; ការលុបលទ្ធផលនៃពហុកោណក្នុងការសាកល្បងតែប៉ុណ្ណោះសម្រាប់ប៉ារ៉ាម៉ែត្រដែលមិនត្រូវបានកំណត់។
ប្រើតម្លៃលំនាំដើម ។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ មិនត្រូវបានកំណត់ឬមិនពិតការពង្រីក ពាក្យ ត្រូវបានជំនួស។ បើមិនដូច្នោះទេតម្លៃនៃ ប៉ារ៉ាម៉ែត្រ ត្រូវបានជំនួស។
ផ្ដល់តម្លៃលំនាំដើម ។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ មិនត្រូវបានកំណត់ឬទទេការពង្រីក ពាក្យ ត្រូវបានកំណត់ទៅ ប៉ារ៉ាម៉ែត្រ ។ បន្ទាប់មកតម្លៃរបស់ ប៉ារ៉ាម៉ែត្រ ត្រូវបានជំនួស។ ប៉ារ៉ាម៉ែត្រទីតាំងនិងប៉ារ៉ាម៉ែត្រពិសេសមិនត្រូវបានផ្តល់ឱ្យតាមវិធីនេះ។
បង្ហាញកំហុសប្រសិនបើបោះបង់ឬមិនកំណត់ ។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ ត្រូវបានទុកចោលឬមិនកំណត់ការពង្រីក ពាក្យ (ឬសារដែលមានប្រសិទ្ធិភាពប្រសិនបើ ពាក្យ មិនមាន) ត្រូវបានសរសេរទៅកំហុសស្តង់ដារហើយសែលប្រសិនបើវាមិនមែនជាអន្តរកម្មចេញ។ បើមិនដូច្នោះទេតម្លៃនៃ ប៉ារ៉ាម៉ែត្រ ត្រូវបានជំនួស។
ប្រើតម្លៃជំនួស ។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ មិនត្រឹមត្រូវឬមិនកំណត់គ្មានអ្វីត្រូវបានជំនួសបើមិនដូច្នោះការពង្រីក ពាក្យ ត្រូវបានជំនួស។
ពង្រីកទៅឈ្មោះនៃអថេរដែលឈ្មោះរបស់វាចាប់ផ្តើមដោយ បុព្វបទ ដែលបំបែកដោយតួអក្សរដំបូងនៃអថេរពិសេស IFS ។
ប្រវែងតួអក្សរនៃតម្លៃរបស់ ប៉ារ៉ាម៉ែត្រ ត្រូវបានជំនួស។ បើ ប៉ារ៉ាម៉ែត្រ គឺ * ឬ @ តម្លៃដែលបានជំនួសគឺជាចំនួនប៉ារ៉ាម៉ែត្រទីតាំង។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ ជាឈ្មោះអារ៉េដែលបានបញ្ចូលដោយ * ឬ @ តម្លៃដែលត្រូវបានជំនួសគឺជាចំនួនធាតុក្នុងអារេ។
ពាក្យ ត្រូវបានពង្រីកដើម្បីបង្កើតគំរូដូចក្នុងការពង្រីកឈ្មោះផ្លូវ។ បើលំនាំផ្គូផ្គងនឹងការចាប់ផ្តើមនៃ ប៉ារ៉ាម៉ែត្រ នោះលទ្ធផលនៃការពង្រីកគឺជាតម្លៃពង្រីកនៃ ប៉ារ៉ាម៉ែត្រដែល មានគំរូផ្គូផ្គងខ្លីបំផុត (case `` ' # ' ') ឬលំនាំផ្គូផ្គងវែងបំផុត (`` ## ' 'បានលុប) ។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ គឺ @ ឬ * ប្រតិបត្តិការដកយកលំនាំចេញត្រូវបានអនុវត្តទៅប៉ារ៉ាម៉ែត្រទីតាំងនីមួយៗហើយការពង្រីកគឺជាបញ្ជីលទ្ធផល។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ ជាអថេរអារ៉េដែលបានបញ្ចូលជាមួយ @ ឬ * ប្រតិបត្តិការដកយកចេញលំនាំត្រូវបានអនុវត្តទៅសមាជិកនីមួយៗនៃអារេហើយការពង្រីកគឺជាបញ្ជីលទ្ធផល។
ពាក្យ ត្រូវបានពង្រីកដើម្បីបង្កើតគំរូដូចក្នុងការពង្រីកឈ្មោះផ្លូវ។ ប្រសិនបើលំនាំផ្គូផ្គងផ្នែកបន្ទាប់នៃតម្លៃពង្រីកនៃ ប៉ារ៉ាម៉ែត្រ នោះលទ្ធផលនៃការពង្រីកគឺជាតម្លៃពង្រីកនៃ ប៉ារ៉ាម៉ែត្រដែល មានលំនាំផ្គូផ្គងខ្លីបំផុត (ករណី `` % '') ឬលំនាំផ្គូផ្គងវែងបំផុត (`` % % '' case) បានលុប។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ គឺ @ ឬ * ប្រតិបត្តិការដកយកលំនាំចេញត្រូវបានអនុវត្តទៅប៉ារ៉ាម៉ែត្រទីតាំងនីមួយៗហើយការពង្រីកគឺជាបញ្ជីលទ្ធផល។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ ជាអថេរអារ៉េដែលបានបញ្ចូលជាមួយ @ ឬ * ប្រតិបត្តិការដកយកចេញលំនាំត្រូវបានអនុវត្តទៅសមាជិកនីមួយៗនៃអារេហើយការពង្រីកគឺជាបញ្ជីលទ្ធផល។
លំនាំ ត្រូវបានពង្រីកដើម្បីបង្កើតលំនាំដូចនៅក្នុងការពង្រីកឈ្មោះផ្លូវ។ ប៉ារ៉ាម៉ែត្រ ត្រូវបានពង្រីកនិងការផ្គូផ្គងវែងបំផុតនៃ លំនាំ ប្រឆាំងនឹងតម្លៃរបស់វាត្រូវបានជំនួសដោយ ខ្សែអក្សរ ។ ក្នុងទម្រង់ទី 1 មានតែការប្រកួតដំបូងត្រូវបានជំនួស។ សំណុំបែបបទទីពីរបណ្តាលឱ្យការផ្គូផ្គងនៃ គំរូទាំងអស់ ត្រូវបានជំនួសដោយ ខ្សែអក្សរ ។ ប្រសិនបើ លំនាំ ចាប់ផ្តើមជាមួយ លេខ វាត្រូវតែផ្គូផ្គងនៅពេលចាប់ផ្តើមតម្លៃ ប៉ារ៉ាម៉ែត្រដែល បានពង្រីក។ ប្រសិនបើ លំនាំ ចាប់ផ្ដើមដោយ % វាត្រូវតែផ្គូផ្គងនៅចុង ប៉ារ៉ាម៉ែត្រ តម្លៃ ប៉ារ៉ាម៉ែត្រ ។ ប្រសិនបើ ខ្សែអក្សរ មិនត្រឹមត្រូវការផ្គូផ្គងនៃ លំនាំ នឹងត្រូវបានលុបហើយ លំនាំ / លំនាំ ខាងក្រោមអាចត្រូវបានលុបចោល។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ គឺ @ ឬ * ប្រតិបត្តិការជំនួសនឹងត្រូវបានអនុវត្តទៅប៉ារ៉ាម៉ែត្រក្នុងទីតាំងនីមួយៗហើយការពង្រីកគឺជាបញ្ជីលទ្ធផល។ ប្រសិនបើ ប៉ារ៉ាម៉ែត្រ ជាអថេរអារ៉េដែលបានចុះជាមួយ @ ឬ * , ប្រតិបត្តិការជំនួសនឹងត្រូវបានអនុវត្តទៅសមាជិកនិមួយៗនៃអារេហើយការពង្រីកគឺជាលទ្ធផលលទ្ធផល។
ការជំនួសពាក្យបញ្ជា
ជំនួសពាក្យបញ្ជា អនុញ្ញាតឱ្យលទ្ធផលរបស់ពាក្យបញ្ជាជំនួសឈ្មោះពាក្យបញ្ជា។ មានទម្រង់ពីរ:
$ ( ពាក្យបញ្ជា )
ឬ
` ពាក្យបញ្ជា `
Bash ធ្វើការពង្រីកដោយប្រតិបត្តិ ពាក្យបញ្ជា និងជំនួសការជំនួសពាក្យបញ្ជាជាមួយលទ្ធផលស្តង់ដារនៃពាក្យបញ្ជាដែលមានបន្ទាត់ថ្មីនៅពីក្រោយត្រូវបានលុប។ បន្ទាត់ថ្មីដែលបានបង្កប់មិនត្រូវបានលុបទេប៉ុន្តែពួកវាអាចត្រូវបានយកចេញកំឡុងពេលបែងចែកពាក្យ។ ការជំនួសពាក្យបញ្ជា $ ( ឯកសារ ឆ្មា ) អាចត្រូវបានជំនួសដោយស្មើប៉ុន្តែលឿនជាង $ (< ឯកសារ ) ។
នៅពេលប្រើវិធីជំនួសបញ្ច្រាសរចនាប័ទ្មចាស់ត្រូវបានប្រើសញ្ញា (\\) រក្សាអត្ថន័យតាមព្យញ្ជនៈរបស់វាលើកលែងតែពេលក្រោយដោយ $ , ` ឬ \ ។ backquot ដំបូងមិនត្រូវបានដាក់មុនដោយសញ្ញាឆេកស្អាងបញ្ចប់ការជំនួសពាក្យបញ្ជា។ នៅពេលប្រើពាក្យ $ ( ពាក្យបញ្ជា ) តួអក្សរទាំងអស់រវាងវង់ក្រចកបង្កើតជាពាក្យបញ្ជា។ គ្មាននរណាពិសេសទេ។
ការជំនួសរបស់ពាក្យបញ្ជាអាចត្រូវបានដាក់ខាងក្នុង។ ដើម្បីសំបុកនៅពេលប្រើសំណុំបែបបទ backquoted សូមគេចចេញពី backquotes ខាងក្នុងដោយសញ្ញាឆូត។
ប្រសិនបើការជំនួសលេចឡើងក្នុងសញ្ញាសម្រង់ទ្វេ, ការបែងចែកពាក្យនិងការពង្រីកឈ្មោះផ្លូវមិនត្រូវបានអនុវត្តលើលទ្ធផលទេ។
ការពង្រីកនព្វន្ធ
ការពង្រីកនព្វន្ធអនុញ្ញាតឱ្យមានការវាយតម្លៃនៃកន្សោមនព្វន្ធនិងការជំនួសលទ្ធផល។ ទ្រង់ទ្រាយសម្រាប់ការពង្រីកនព្វន្ធគឺ:
$ (( កន្សោម ))
កន្សោម ត្រូវបានចាត់ទុកដូចជាវាស្ថិតក្នុងសញ្ញាសម្រង់ទ្វេប៉ុន្តែសម្រង់ពីរនៅខាងក្នុងវង់ក្រចកមិនត្រូវបានចាត់ទុកជាពិសេសទេ។ ថូខឹនទាំងអស់នៅក្នុងកន្សោមត្រូវឆ្លងកាត់ការពង្រីកប៉ារ៉ាម៉ែត្រការពង្រីកខ្សែអក្សរពាក្យបញ្ជាជំនួសនិងការដកស្រង់។ ជំនួសនព្វន្ធអាចត្រូវបានដាក់បញ្ចូលគ្នា។
ការវាយតម្លៃត្រូវបានអនុវត្តដោយយោងទៅតាមវិធានដែលបានរៀបរាប់ខាងក្រោមក្រោម ការវាស់វែងអាត្ម័ន ។ ប្រសិនបើ ការបញ្ចេញមតិ មិនត្រឹមត្រូវនោះ bash នឹង បោះពុម្ពសារដែលបង្ហាញការបរាជ័យហើយគ្មានការជំនួសកើតឡើង។
ការផ្លាស់ប្តូរដំណើរការ
ជំនួសដំណើរការ ត្រូវបានគាំទ្រលើប្រព័ន្ធដែលគាំទ្រឈ្មោះបំពង់ដែលបានដាក់ឈ្មោះ ( FIFOs ) ឬវិធីសាស្ត្រ / dev / fd នៃការដាក់ឈ្មោះឯកសារបើក។ វាត្រូវការសំណុំបែបបទ <( បញ្ជី ) ឬ > ( បញ្ជី ) ។ បញ្ជី ដំណើរការត្រូវបានរត់ជាមួយធាតុបញ្ចូលឬលទ្ធផលរបស់វាដែលភ្ជាប់ទៅ FIFO ឬឯកសារខ្លះក្នុង / dev / fd ។ ឈ្មោះរបស់ឯកសារនេះត្រូវបានអនុម័តជាអាគុយម៉ង់ទៅពាក្យបញ្ជាបច្ចុប្បន្នជាលទ្ធផលនៃការពង្រីក។ បើសំណុំបែបបទ ( បញ្ជី ) ត្រូវបានប្រើការសរសេរទៅឯកសារនេះនឹងផ្តល់នូវការបញ្ចូលសម្រាប់ បញ្ជី ។ ប្រសិនបើសំណុំបែបបទ <( បញ្ជី ) ត្រូវបានប្រើឯកសារដែលបានហុចជាអាគុយម៉ង់គួរតែត្រូវបានអានដើម្បីទទួលលទ្ធផលនៃ បញ្ជី ។
នៅពេលដែលមានដំណើរការការជំនួសដំណើរការត្រូវបានធ្វើឡើងក្នុងពេលដំណាលគ្នាជាមួយប៉ារ៉ាម៉ែត្រនិងការពង្រីកអថេរការជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធ។
ការបំបែកពាក្យ
សែលស្កេនលទ្ធផលនៃការពង្រីកប៉ារ៉ាម៉ែត្រ, ការជំនួសពាក្យបញ្ជា, និងការពង្រីកនព្វន្ធដែលមិនកើតឡើងក្នុងសញ្ញាសម្រង់ទ្វេសម្រាប់ ពាក្យបំបែក ។
សែលសំអាតតួអក្សរនិមួយៗនៃ អាយអេសស៊ី ជាអ្នកកំណត់ព្រំដែនហើយបំបែកពត៌មាននៃការពង្រីកផ្សេងទៀតទៅជាពាក្យលើអក្សរទាំងនេះ។ ប្រសិនបើ IFS មិនត្រូវបានកំណត់ឬតម្លៃរបស់វាគឺពិតជា
អាគុយម៉ង់ទទេជាក់ស្តែង ( "" ឬ '' ) ត្រូវបានរក្សាទុក។ អាគុយម៉ង់ null implicit null ដែលមិនទទួលបានលទ្ធផលដែលកើតចេញពីការពង្រីកប៉ារ៉ាម៉ែត្រដែលគ្មានតម្លៃត្រូវបានយកចេញ។ ប្រសិនបើប៉ារ៉ាម៉ែត្រដែលគ្មានតម្លៃត្រូវបានពង្រីកនៅក្នុងសញ្ញាសម្រង់ទ្វេនោះលទ្ធផលអាគុយម៉ង់មួយត្រូវបានទុកហើយត្រូវបានរក្សាទុក។
សូមកត់សម្គាល់ថាប្រសិនបើគ្មានការពង្រីកទេគ្មានការបែងចែកទេ។
ការពង្រីកឈ្មោះផ្លូវ
បន្ទាប់ពីការពុះបំបែកពាក្យលុះត្រាតែជម្រើស -f ត្រូវបានកំណត់ bash ស្កេនរាល់ពាក្យសម្រាប់តួអក្សរ * ? , និង [ ។ ប្រសិនបើតួអក្សរមួយក្នុងចំណោមតួអក្សរទាំងនេះលេចឡើងបន្ទាប់មកពាក្យត្រូវបានចាត់ទុកថាជា លំនាំមួយ ហើយជំនួសដោយបញ្ជីឈ្មោះឯកសារដែលបានតម្រៀបតាមលំដាប់អក្សរក្រមដែលផ្គូផ្គងនឹងលំនាំ។ ប្រសិនបើរកមិនឃើញឈ្មោះឯកសារដែលផ្គូផ្គងហើយជម្រើសសែល nullglob ត្រូវបានបិទពាក្យមិនត្រូវបានផ្លាស់ប្តូរឡើយ។ ប្រសិនបើជម្រើស nullglob ត្រូវបានកំណត់ហើយគ្មានការផ្គូផ្គងត្រូវបានរកឃើញនោះពាក្យនឹងត្រូវបានយកចេញ។ ប្រសិនបើជម្រើសសែល nocaseglob ត្រូវបានបើកដំណើរការការប្រកួតត្រូវបានអនុវត្តដោយមិនគិតពីករណីតួអក្សរអក្សរសាស្ត្រ។ នៅពេលលំនាំត្រូវបានប្រើសម្រាប់ការពង្រីកឈ្មោះផ្លូវ, តួអក្សរ `` ។ '' នៅ ខាងដើម នៃឈ្មោះឬភ្លាមៗបន្ទាប់ពីសញ្ញា (/) ត្រូវតែផ្គូផ្គងយ៉ាងជាក់លាក់លុះត្រាតែប្រអប់ dotglob ត្រូវបានកំណត់។ នៅពេលផ្គូផ្គងឈ្មោះផ្លូវមួយតួអក្សរសញ្ញាត្រូវតែផ្គូផ្គងយ៉ាងជាក់លាក់។ ក្នុងករណីផ្សេងទៀតតួអក្សរ `` ។ '' ។ '' '' មិនត្រូវបានចាត់ទុកជាពិសេសទេ។ សូមមើលការពិពណ៌នានៃ ហាងទំនិញ ខាងក្រោមក្រោម បញ្ជាបញ្ជា SHELL BUILTIN សម្រាប់សេចក្ដីពិពណ៌នានៃជម្រើស nocaseglob , nullglob និង dotglob ។
អថេរ GLOBIGNORE សែលអាចត្រូវបានប្រើដើម្បីដាក់កម្រិតសំណុំនៃឈ្មោះឯកសារដែលផ្គូផ្គងនឹង លំនាំមួយ ។ ប្រសិនបើ GLOBIGNORE ត្រូវបានកំណត់ឈ្មោះឯកសារដែលផ្គូផ្គងគ្នាមួយដែលត្រូវគ្នានឹងលំនាំមួយនៅក្នុង GLOBIGNORE ត្រូវបានដកចេញពីបញ្ជីការប្រកួត។ ឈ្មោះឯកសារ `` ។ '' ។ និង `` .. '' ត្រូវបានគេមិនអើពើទោះបីជា GLOBIGNORE ត្រូវបានកំណត់ក៏ដោយ។ ទោះជាយ៉ាងណាក៏ដោយការកំណត់ GLOBIGNORE មានឥទ្ធិពលនៃការបើកជម្រើស ប្រអប់ dotglob shell ដូច្នេះរាល់ឈ្មោះឯកសារផ្សេងទៀតដែលចាប់ផ្តើមជាមួយ `` ។ '' នឹងផ្គូផ្គង។ ដើម្បីទទួលឥរិយាបថចាស់ពីការមិនអើពើឈ្មោះឯកសារដែលចាប់ផ្ដើមដោយ `` ។ '' , ធ្វើឱ្យ `` ។ * '' លំនាំមួយនៃ GLOBIGNORE ។ ជម្រើស dotglob ត្រូវបានបិទនៅពេល GLOBIGNORE មិនត្រូវបានកំណត់។
ផ្គូផ្គងលំនាំ
តួអក្សរណាដែលលេចឡើងក្នុងលំនាំមួយក្រៅពីតួអក្សរគំរូពិសេសដែលបានពណ៌នាខាងក្រោមផ្គូផ្គងខ្លួនវា។ តួអក្សរ NUL អាចមិនកើតឡើងក្នុងលំនាំមួយ។ តួអក្សរគំរូពិសេសត្រូវតែត្រូវបានដកស្រង់ប្រសិនបើវាត្រូវបានផ្គូផ្គងតាមព្យញ្ជនៈ។
តួអក្សរគំរូពិសេសមានអត្ថន័យដូចខាងក្រោម:
*
ផ្គូផ្គងខ្សែអក្សរណាមួយរួមទាំងខ្សែអក្សរទទេ។
?
ផ្គូផ្គងតួអក្សរតែមួយ។
[... ]
ផ្គូផ្គងតួអក្សរភ្ជាប់ណាមួយ។ តួអក្សរដែលបានបំបែកដោយសហសញ្ញាតំណាងឱ្យ កន្សោមជួរ ។ តួអក្សរណាដែលតម្រៀបរវាងតួអក្សរទាំងពីរបញ្ចូលគ្នាដោយប្រើលំដាប់បញ្ជូលគ្នានិងសំណុំតួអក្សររបស់តំបន់បច្ចុប្បន្នត្រូវបានផ្គូផ្គង។ ប្រសិនបើតួអក្សរដំបូងតាម [ គឺ ! ឬ ^ បន្ទាប់មកតួអក្សរណាមួយដែលមិនត្រូវបានភ្ជាប់ត្រូវបានផ្គូផ្គង។ លំដាប់តម្រៀបនៃតួអក្សរក្នុងកន្សោមជួរត្រូវបានកំណត់ដោយមូលដ្ឋានបច្ចុប្បន្ននិងតម្លៃអថេរសែល LC_COLLATE បើកំណត់។ A - អាចត្រូវបានផ្គូផ្គងដោយរួមបញ្ចូលវាជាតួអក្សរដំបូងឬចុងក្រោយនៅក្នុងសំណុំ។ A ] អាចត្រូវបានផ្គូផ្គងដោយរួមបញ្ចូលវាជាតួអក្សរដំបូងនៅក្នុងសំណុំ។
ក្នុង [ និង ] , ថ្នាក់តួអក្សរ អាចត្រូវបានបញ្ជាក់ដោយប្រើវាក្យសម្ពន្ធ [: ថ្នាក់ :] , ដែល ថ្នាក់ គឺជា ថ្នាក់ មួយក្នុងចំណោមថ្នាក់ខាងក្រោមដែលបានកំណត់ក្នុងស្តង់ដារ POSIX.2:
alnum អាល់ហ្វា ascii ទទេ cntrl ខ្ទង់ក្រាហ្វអក្សរទាបជាងបោះពុម្ពចន្លោះអក្សរតូចជាងពាក្យ xdigit
ថ្នាក់តួអក្សរផ្គូផ្គងតួអក្សរណាដែលជាកម្មសិទ្ធិរបស់ថ្នាក់នោះ។ ពាក្យ តួអក្សរ ពាក្យ ផ្គូផ្គងអក្សរលេខនិងតួអក្សរ _ ។
ក្នុង [ និង ] , ថ្នាក់សមមូល អាចត្រូវបានបញ្ជាក់ដោយប្រើវាក្យសម្ព័ន្ធ [= c =] ដែលផ្គូផ្គងតួអក្សរទាំងអស់ដែលមានទម្ងន់ស្រទាប់ដូចគ្នា (ដូចបានកំណត់ដោយមូលដ្ឋានបច្ចុប្បន្ន) ជាតួអក្សរ c ។
ក្នុង [ និង ] , វាក្យសម្ពន្ធ [។ និមិត្តសញ្ញា ] ផ្គូផ្គងសញ្ញា និមិត្តសញ្ញានិមិត្តសញ្ញា ។
ប្រសិនបើ ជំរើស extglob shell ត្រូវបានបើកដំណើរការដោយប្រើ shopt builtin ប្រតិបត្តិសញ្ញាផ្គូផ្គងលំនាំជាច្រើនត្រូវបានទទួលស្គាល់។ នៅក្នុងការពិពណ៌នាដូចខាងក្រោម បញ្ជីគំរូ គឺជាតារាងនៃលំនាំមួយឬច្រើនដែលបំបែកដោយ | ។ លំនាំសមាសធាតុអាចត្រូវបានបង្កើតឡើងដោយប្រើគំរូតូចមួយឬច្រើនដូចខាងក្រោម:
? ( លំនាំបញ្ជី )
ផ្គូផ្គងសូន្យឬមួយកើតឡើងនៃលំនាំដែលបានផ្តល់ឱ្យ
* ( គំរូបញ្ជី )
ផ្គូផ្គងការកើតឡើងនៃសូន្យឬច្រើននៃលំនាំដែលបានផ្តល់
+ ( គំរូបញ្ជី )
ផ្គូផ្គងការកើតឡើងមួយឬច្រើននៃលំនាំដែលបានផ្តល់ឱ្យ
@ ( pattern-list )
ផ្គូផ្គងយ៉ាងជាក់លាក់មួយនៃលំនាំដែលបានផ្តល់ឱ្យ
! ( គំរូបញ្ជី )
ផ្គូផ្គងអ្វីមួយលើកលែងតែគំរូដែលបានផ្តល់ឱ្យ
ដកចេញសម្រង់
បន្ទាប់ពីការពង្រីកខាងមុខរាល់ការកើតឡើងដែលមិនបានដឹងរបស់តួអង្គ \ ' និង ' ដែលមិនបានមកពីការពង្រីកខាងលើត្រូវបានយកចេញ។
REDIRECTION
មុនពេលពាក្យបញ្ជាមួយត្រូវបានប្រតិបត្តិការបញ្ចូលនិងលទ្ធផលរបស់វាអាចត្រូវបាន ប្ដូរទិស ដោយប្រើកំណត់ពិសេសដែលបកប្រែដោយសែល។ ការប្ដូរទិសអាចត្រូវបានប្រើដើម្បីបើកនិងបិទឯកសារសម្រាប់បរិស្ថានប្រតិបត្តិសែលបច្ចុប្បន្ន។ សញ្ញាប្រមាណវិធីប្ដូរទិសដូចខាងក្រោមអាចលេចឡើងឬលេចឡើងគ្រប់ទីកន្លែងក្នុង ពាក្យបញ្ជាសាមញ្ញ ឬអាចធ្វើតាម ពាក្យបញ្ជា ។ ការបញ្ជូនបន្តត្រូវបានដំណើរការតាមលំដាប់ដែលវាលេចឡើងពីឆ្វេងទៅស្តាំ។
នៅក្នុងការពិពណ៌នាខាងក្រោមប្រសិនបើចំនួនអ្នកពិពណ៌នាឯកសារត្រូវបានលុបហើយតួអក្សរទីមួយនៃសញ្ញាបញ្ចូនបន្តគឺការបញ្ជូនបន្តសំដៅទៅលើការបញ្ចូលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 0) ។ ប្រសិនបើតួអក្សរដំបូងនៃសញ្ញាបញ្ចូនបន្តគឺការប្តូរទិសដៅសំដៅទៅលើលទ្ធផលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 1) ។
ពាក្យដែលធ្វើតាមសញ្ញាបញ្ចូនបន្តក្នុងការពិពណ៌នាខាងក្រោមនេះលើកលែងតែមានការកត់សម្គាល់ផ្សេងទៀតត្រូវបានទទួលរងនូវការពង្រីករទ្វេរពង្រីកការពង្រីកការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធដកស្រង់ការដកចេញឈ្មោះផ្លូវនិងការបំបែកពាក្យ។ ប្រសិនបើវាពង្រីកពាក្យច្រើនជាងមួយនោះ bash រាយការណ៍កំហុស។
ចំណាំថាលំដាប់នៃការប្តូរទិសគឺមានសារៈសំខាន់។ ឧទាហរណ៍ពាក្យបញ្ជា
ls > dirlist 2 > & 1
ដឹកនាំទាំងលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារទៅជាឯកសារ dirlist ខណៈពេលពាក្យបញ្ជា
ls 2 > & 1 > dirlist
ដឹកនាំតែលទ្ធផលស្តង់ដារដើម្បីដាក់ឯកសារ dirlist ពីព្រោះកំហុសស្តង់ដារត្រូវបានស្ទួនជាលទ្ធផលស្តង់ដារមុនពេលទិន្នផលស្តង់ដារត្រូវបានប្ដូរទិសទៅ dirlist ។
Bash ដោះស្រាយឈ្មោះឯកសារជាច្រើនពិសេសនៅពេលដែលពួកវាត្រូវបានប្រើក្នុងការបញ្ជូនបន្តដូចដែលបានពណ៌នាក្នុងតារាងដូចខាងក្រោម:
/ dev / fd / fd
ប្រសិនបើ fd ជាចំនួនគត់ត្រឹមត្រូវអ្នកពិពណ៌នាឯកសារ fd ត្រូវបានស្ទួន។
/ dev / stdin
កម្មវិធីពិពណ៌នាឯកសារ 0 ត្រូវបានស្ទួនគ្នា។
/ dev / stdout
កម្មវិធីពិពណ៌នាឯកសារ 1 ត្រូវបានជាន់គ្នា។
/ dev / stderr
កម្មវិធីពិពណ៌នាឯកសារ 2 ត្រូវបានស្ទួន។
/ dev / tcp / host / port
ប្រសិនបើ ម៉ាស៊ីន ជាឈ្មោះម៉ាស៊ីនឬអាសយដ្ឋានអ៊ីនធឺណិតត្រឹមត្រូវហើយ ច្រក គឺជាលេខច្រកចំនួនគត់ឬឈ្មោះសេវាកម្ម bash ព្យាយាមបើកការតភ្ជាប់ TCP ទៅរន្ធដែលត្រូវគ្នា។
/ dev / udp / host / port
ប្រសិនបើ ម៉ាស៊ីន ជាឈ្មោះម៉ាស៊ីនត្រឹមត្រូវឬអាសយដ្ឋានអ៊ីនធឺណិតហើយ ច្រក គឺជាលេខច្រកលេខឬឈ្មោះសេវាកម្មចំនួនគត់, bash ប៉ុនប៉ងបើកការតភ្ជាប់ UDP ទៅរន្ធដែលត្រូវគ្នា។
បរាជ័យក្នុងការបើកឬបង្កើតឯកសារបណ្ដាលឱ្យការប្តូរទិសបរាជ័យ។
បង្វែរបញ្ចូល
ការបង្វែរបញ្ចូលបញ្ចូលបណ្តាលឱ្យឯកសារដែលឈ្មោះរបស់វាមានលទ្ធផលពីការពង្រីក ពាក្យ ដើម្បីបើកសម្រាប់ការអានលើអ្នកពិពណ៌នាឯកសារឬការបញ្ចូលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 0) ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។
ទ្រង់ទ្រាយទូទៅសម្រាប់ការបញ្ជូនបន្តគឺ:
[ n ] < ពាក្យ
បង្វែរលទ្ធផល
ការបង្វែរទិន្នផលបណ្តាលឱ្យឯកសារដែលឈ្មោះរបស់វាមានលទ្ធផលពីការពង្រីក ពាក្យ ដើម្បីបើកសម្រាប់សរសេរលើអ្នកពិពណ៌នាឯកសារឬលទ្ធផលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 1) ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។ ប្រសិនបើឯកសារមិនមានវាត្រូវបានបង្កើត។ ប្រសិនបើវាមានវាត្រូវបានកាត់ឱ្យខ្លីទៅទំហំសូន្យ។
ទ្រង់ទ្រាយទូទៅសម្រាប់បញ្ជូនទិសដៅគឺ:
[ n ] > ពាក្យ
ប្រសិនបើប្រតិបត្តិករប្តូរទិស > និងជម្រើស noclobber ទៅនឹង សំណុំ តួអក្សរត្រូវបានបើកការប្តូរទិសនឹងបរាជ័យប្រសិនបើឯកសារដែលឈ្មោះរបស់វាមកពីការពង្រីក ពាក្យ មានហើយជាឯកសារធម្មតា។ ប្រសិនបើប្រតិបត្តិករប្តូរទិសគឺ > | ឬសញ្ញាប្រមាណវិធីប្តូរទិស > និងជម្រើស noclobber ទៅពាក្យបញ្ជា builtin មិនត្រូវបានបើកការប្តូរទិសត្រូវបានប៉ុនប៉ងទោះបីជាឯកសារដែលមានឈ្មោះដោយ ពាក្យ មាន។
បន្ថែមលទ្ធផលបង្វែរ
ការបង្វែរទិន្នផលនៅក្នុងរបៀបនេះបណ្តាលឱ្យឯកសារដែលឈ្មោះរបស់វាមានលទ្ធផលពីការពង្រីក ពាក្យដែល ត្រូវបានបើកសម្រាប់បន្ថែមលើអ្នកពិពណ៌នាឯកសារឬលទ្ធផលស្តង់ដា (អ្នកពិពណ៌នាឯកសារ 1) ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។ ប្រសិនបើឯកសារមិនមានវាត្រូវបានបង្កើត។
ទ្រង់ទ្រាយទូទៅសម្រាប់លទ្ធផលបន្ថែមគឺ:
[ n ] >> ពាក្យ
បង្វែរលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារ
Bash អនុញ្ញាតទាំងលទ្ធផលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 1) និងលទ្ធផលកំហុសស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 2) ត្រូវបានប្ដូរទិសទៅឯកសារដែលឈ្មោះគឺការពង្រីក ពាក្យ ជាមួយសំណង់នេះ។
មានពីរទ្រង់ទ្រាយសម្រាប់បញ្ជូនបន្តនូវលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារ:
&> ពាក្យ
និង
> ពាក្យ
ក្នុងចំណោមទំរង់ទាំងពីរនេះដំបូងត្រូវបានគេពេញចិត្ត។ នេះគឺស្មើទៅនឹងសទ្ទានុក្រម
> ពាក្យ 2 > & 1
នៅទីនេះឯកសារ
ប្រភេទនៃការប្តូរទិសនេះណែនាំសែលដើម្បីអានបញ្ចូលពីប្រភពបច្ចុប្បន្នរហូតដល់បន្ទាត់ដែលមានតែ ពាក្យ (គ្មានទទេក្រោយៗទេ) ។ បន្ទាត់ទាំងអស់ដែលអានរហូតដល់ចំណុចនោះនឹងត្រូវបានប្រើជាការបញ្ចូលស្តង់ដារសម្រាប់ពាក្យបញ្ជា។
ទម្រង់ឯកសារនៅទីនេះគឺ:
<< [ - ] ពាក្យ នៅទីនេះឯកសារ delimiterគ្មានការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធឬការពង្រីកឈ្មោះផ្លូវត្រូវបានអនុវត្តលើ ពាក្យ ។ ប្រសិនបើតួអក្សរណាមួយនៅក្នុង ពាក្យ ត្រូវបានដកស្រង់អ្នក កំណត់ព្រំដែន គឺជាលទ្ធផលនៃការដកចេញសម្រង់លើ ពាក្យ ហើយបន្ទាត់នៅក្នុងឯកសារនៅទីនេះមិនត្រូវបានពង្រីកទេ។ ប្រសិនបើ ពាក្យមិន ត្រូវបានទាញយកបន្ទាត់ទាំងអស់នៃឯកសារនៅទីនេះត្រូវបានធ្វើឱ្យពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធ។ ក្នុងករណីក្រោយតួអក្សរ \ <បន្ទាត់ថ្មី> ត្រូវបានអើពើហើយ \ ត្រូវបានប្រើដើម្បីដកស្រង់តួអក្សរ \ , $ , និង ` ។
ប្រសិនបើសញ្ញាប្រមាណវិធីប្តូរទិស << - , បន្ទាប់មកតួអក្សរថេបនាំមុខទាំងអស់ត្រូវបានដកចេញពីបន្ទាត់បញ្ចូលនិងបន្ទាត់ដែលមាន សញ្ញាកំណត់ព្រំដែន ។ នេះអនុញ្ញាតឱ្យឯកសារនៅទីនេះក្នុងស្គ្រីបសែលដែលត្រូវបានចូលបន្ទាត់តាមបែបធម្មជាតិ។
នៅទីនេះខ្សែអក្សរ
ភាពខុសគ្នានៃឯកសារនៅទីនេះទ្រង់ទ្រាយគឺ:
<<< ពាក្យពាក្យ នេះត្រូវបានពង្រីកនិងផ្តល់ទៅឱ្យពាក្យបញ្ជាលើការបញ្ចូលស្តង់ដាររបស់វា។
ការពិពណ៌នាឯកសារស្ទួន
ប្រតិបត្តិករប្តូរទិស
[ n ] < ពាក្យ
ត្រូវបានប្រើដើម្បីចម្លងឌិគ្រីបឯកសារបញ្ចូល។ ប្រសិនបើ ពាក្យ ពង្រីកទៅតួលេខមួយឬច្រើននោះអ្នកពិពណ៌នាឯកសារដែលបានចង្អុលបង្ហាញដោយ n ត្រូវបានបង្កើតឡើងដើម្បីជាច្បាប់ចម្លងនៃអ្នកពិពណ៌នាឯកសារនោះ។ ប្រសិនបើតួលេខនៅក្នុង ពាក្យ មិនបញ្ជាក់អ្នកពិពណ៌នាឯកសារបើកសម្រាប់ការបញ្ចូលកំហុសឆ្គងប្តូរទិសកើតឡើង។ ប្រសិនបើ ពាក្យ វាយតម្លៃទៅ - អ្នកពិពណ៌នាឯកសារ n ត្រូវបានបិទ។ ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់ការបញ្ចូលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 0) ត្រូវបានប្រើ។
ប្រតិបត្តិករ
[ n ] > ពាក្យ
ត្រូវបានប្រើស្រដៀងគ្នាទៅនឹងការពិពណ៌នាឯកសារលទ្ធផលស្ទួន។ ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់លទ្ធផលស្តង់ដា (អ្នកពិពណ៌នាឯកសារ 1) ត្រូវបានប្រើ។ ប្រសិនបើតួលេខនៅក្នុង ពាក្យ មិនបញ្ជាក់កម្មវិធីពិពណ៌នាឯកសារបើកសម្រាប់លទ្ធផលកំហុសការប្តូរទិសកើតឡើង។ ក្នុងករណីពិសេសប្រសិនបើ n ត្រូវបានលុបនិង ពាក្យ មិនពង្រីកទៅជាតួលេខមួយឬច្រើននោះលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារត្រូវបានប្ដូរទិសដូចដែលបានពណ៌នាពីមុន។
ការផ្លាស់ប្តូរអ្នកពិពណ៌នាឯកសារ
ប្រតិបត្តិករប្តូរទិស
[ n ] <និង ខ្ទង់ -
ផ្លាស់ទី ខ្ទង់អ្នក ពិពណ៌នាឯកសារទៅជាឯកសារពិពណ៌នា n ឬបញ្ចូលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 0) ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។ ខ្ទង់ ត្រូវបានបិទបន្ទាប់ពីត្រូវបានចម្លងទៅ n ។
ដូចគ្នានឹងប្រតិបត្តិករប្តូរទិស
[ n ] > ខ្ទង់ -
ផ្លាស់ទី លេខអ្នក ពិពណ៌នាឯកសារទៅជាឯកសារពិពណ៌នា n ឬលទ្ធផលស្តង់ដារ (អ្នកពិពណ៌នាឯកសារ 1) ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។
បើកការពិពណ៌នាឯកសារសម្រាប់ការអាននិងការសរសេរ
ប្រតិបត្តិករប្តូរទិស
[ n ] <> ពាក្យ
បណ្តាលឱ្យឯកសារដែលមានឈ្មោះជាការពង្រីកនៃ ពាក្យដែល ត្រូវបានបើកទាំងអាននិងសរសេរលើអ្នកពិពណ៌នាឯកសារឬនៅលើអ្នកពិពណ៌នាឯកសារ 0 ប្រសិនបើ n មិនត្រូវបានបញ្ជាក់។ ប្រសិនបើឯកសារមិនមានវាត្រូវបានបង្កើត។
ALIASES
ឈ្មោះក្លែងក្លាយ អនុញ្ញាតឱ្យឃ្លាត្រូវជំនួសដោយពាក្យនៅពេលវាត្រូវបានគេប្រើជាពាក្យដំបូងនៃពាក្យបញ្ជាសាមញ្ញ។ សែលរក្សាបញ្ជីឈ្មោះក្លែងក្លាយដែលអាចកំណត់និងមិនកំណត់ជាមួយពាក្យបញ្ជា ក្លែងក្លាយ និងពាក្យបញ្ជា unalias builtin (សូមមើល SHELL BUILTIN COMMANDS ខាងក្រោម) ។ ពាក្យដំបូងនៃពាក្យបញ្ជានីមួយៗបើមិនបានគូសធីកត្រូវបានពិនិត្យដើម្បីមើលថាតើវាមានឈ្មោះក្លែងក្លាយឬអត់។ បើដូច្នោះមែនពាក្យនោះត្រូវបានជំនួសដោយអត្ថបទរបស់ឈ្មោះក្លែងក្លាយ។ ឈ្មោះក្លែងក្លាយនិងអត្ថបទជំនួសអាចមានការបញ្ចូលសែលត្រឹមត្រូវណាមួយរួមទាំង metacharacters ដែល បានរាយខាងលើដោយលើកលែងថាឈ្មោះក្លែងក្លាយអាចមិនមាន = ។ ពាក្យដំបូងនៃអត្ថបទជំនួសត្រូវបានសាកល្បងសម្រាប់ឈ្មោះក្លែងក្លាយប៉ុន្តែពាក្យដែលដូចគ្នាទៅនឹងឈ្មោះក្លែងក្លាយត្រូវបានពង្រីកមិនត្រូវបានពង្រីកជាលើកទីពីរទេ។ នេះមានន័យថាអាចមានឈ្មោះក្លែងក្លាយ ls ទៅ ls-f ហើយ bash មិនព្យាយាមពង្រីកពាក្យជំនួសជំនួស។ ប្រសិនបើតួអក្សរចុងក្រោយនៃឈ្មោះក្លែងក្លាយគឺ ទទេ បន្ទាប់មកពាក្យបញ្ជាបន្ទាប់បន្ទាប់ពីឈ្មោះក្លែងក្លាយក៏ត្រូវបានធីកដើម្បីពង្រីកឈ្មោះក្លែងក្លាយ។
ឈ្មោះក្លែងក្លាយត្រូវបានបង្កើតនិងរាយជាមួយពាក្យបញ្ជា ក្លែងក្លាយ ហើយត្រូវបានយកចេញដោយពាក្យបញ្ជា unalias ។
គ្មានយន្តការសម្រាប់ប្រើអាគុយម៉ង់នៅក្នុងអត្ថបទជំនួស។ ប្រសិនបើត្រូវការអាគុយម៉ង់អនុគមន៍សែលគួរត្រូវបានប្រើ (សូមមើលលក្ខណៈពិសេសខាងក្រោម) ។
ឈ្មោះក្លែងក្លាយមិនត្រូវបានពង្រីកទេនៅពេលសែលមិនមានអន្តរសកម្មលុះត្រាតែជម្រើសសែល expand_aliases ត្រូវបានកំណត់ដោយប្រើ shopt (សូមមើលការពិពណ៌នារបស់ shopt ស្ថិតនៅក្រោម SHELL BUILTIN COMMANDS ខាងក្រោម) ។
ច្បាប់ទាក់ទងនឹងនិយមន័យនិងការប្រើឈ្មោះក្លែងក្លាយមានការយល់ច្រឡំ។ Bash តែងតែអានយ៉ាងហោចណាស់បន្ទាត់បញ្ចូលពេញលេញមួយមុនពេលប្រតិបត្តិពាក្យបញ្ជាណាមួយនៅលើបន្ទាត់នោះ។ ឈ្មោះក្លែងក្លាយត្រូវបានពង្រីកនៅពេលដែលពាក្យបញ្ជាត្រូវបានអានមិនមែននៅពេលដែលវាត្រូវបានប្រតិបត្តិទេ។ ដូច្នេះនិយមន័យក្លែងក្លាយលេចឡើងនៅលើបន្ទាត់ដូចគ្នានឹងពាក្យបញ្ជាផ្សេងទៀតមិនមានប្រសិទ្ធភាពរហូតដល់បន្ទាត់អានបញ្ចូលបន្ទាប់។ ពាក្យបញ្ជាដូចខាងក្រោមនិយមន័យឈ្មោះក្លែងក្លាយនៅលើបន្ទាត់ដែលមិនត្រូវបានប៉ះពាល់ដោយឈ្មោះក្លែងក្លាយថ្មី។ ឥរិយាបថនេះក៏ជាបញ្ហានៅពេលមុខងារត្រូវបានប្រតិបត្តិ។ ឈ្មោះក្លែងក្លាយត្រូវបានពង្រីកនៅពេលដែលនិយមន័យអនុគមន៍ត្រូវបានអានមិនមែននៅពេលអនុគមន៍ត្រូវបានប្រតិបត្តិទេពីព្រោះនិយមន័យអនុគមន៍គឺខ្លួនវាជាពាក្យសុំសមាសធាតុ។ ជាផលវិបាក, ឈ្មោះក្លែងក្លាយដែលបានកំណត់នៅក្នុងអនុគមន៍មួយគឺមិនអាចប្រើបានរហូតដល់ក្រោយអនុគមន៍នោះត្រូវបានប្រតិបត្តិ។ ដើម្បីឱ្យមានសុវត្ថិភាពសូមដាក់និយមន័យឈ្មោះក្លែងក្លាយនៅលើបន្ទាត់ដាច់ដោយឡែកហើយកុំប្រើ ឈ្មោះក្លែងក្លាយ នៅក្នុងពាក្យបញ្ជាសមាសធាតុ។
សម្រាប់គោលបំណងស្ទើរតែគ្រប់ឈ្មោះក្លែងក្លាយត្រូវបានជំនួសដោយមុខងារសែល។
មុខងារ
មុខងារសែលដែលបានកំណត់ដូចបានពណ៌នាខាងលើនៅក្រោម SHELL GRAMMAR ផ្ទុកពាក្យបញ្ជាជាបន្តបន្ទាប់។ ពេលឈ្មោះអនុគមន៍សែលត្រូវបានប្រើជាឈ្មោះពាក្យបញ្ជាសាមញ្ញបញ្ជីនៃពាក្យបញ្ជាដែលភ្ជាប់នឹងឈ្មោះអនុគមន៍នោះត្រូវបានប្រតិបត្តិ។ អនុគមន៍ត្រូវបានប្រតិបត្តិក្នុងបរិបទនៃសែលបច្ចុប្បន្ន។ គ្មានដំណើរការថ្មីត្រូវបានបង្កើតឡើងដើម្បីបកប្រែពួកវា (ផ្ទុយទៅនេះជាមួយការអនុវត្តស្គ្រីបសែល) ។ នៅពេលអនុគមន៍ត្រូវបានប្រតិបត្តិអាគុយម៉ង់នៃអនុគមន៍ក្លាយជាប៉ារ៉ាម៉ែត្រទីតាំងក្នុងកំឡុងពេលប្រតិបត្តិ។ ប៉ារ៉ាម៉ែត្រពិសេស # ត្រូវបានធ្វើបច្ចុប្បន្នភាពដើម្បីឆ្លុះបញ្ចាំងការផ្លាស់ប្តូរ។ ប៉ារ៉ាម៉ែត្រទីតាំង 0 មិនត្រូវបានផ្លាស់ប្តូរទេ។ អថេរ FUNCNAME ត្រូវបានកំណត់ទៅជាឈ្មោះនៃអនុគមន៍នៅពេលដែលអនុគមន៍ត្រូវបានប្រតិបត្តិ។ ទិដ្ឋភាពផ្សេងទៀតនៃបរិស្ថានប្រតិបត្តិសែលគឺដូចគ្នារវាងមុខងារនិងអ្នកហៅរបស់វាដោយលើកលែងតែអន្ទាក់ DEBUG (មើលការពិពណ៌នានៃ អន្ទាក់ ឋាននរក ក្រោម SHELL BUILTIN COMMANDS ខាងក្រោម) មិនត្រូវបានទទួលយកទេលុះត្រាតែមុខងារត្រូវបានផ្តល់គុណលក្ខណៈ ដាន ( សូមមើលការពិពណ៌នានៃ ប្រកាស សាងសង់ខាងក្រោម) ។
អថេរមូលដ្ឋាននៅក្នុងអនុគមន៍អាចត្រូវបានប្រកាសជាមួយពាក្យបញ្ជា builtin មូលដ្ឋាន ។ ជាទូទៅអថេរនិងតម្លៃរបស់ពួកគេត្រូវបានចែករំលែករវាងមុខងារនិងអ្នកហៅរបស់វា។
ប្រសិនបើពាក្យបញ្ជា builtin ត្រូវបានប្រតិបត្តិនៅក្នុងអនុគមន៍មួយអនុគមន៍បញ្ចប់និងប្រតិបត្តិបន្តជាមួយពាក្យបញ្ជាបន្ទាប់បន្ទាប់ពីការហៅអនុគមន៍។ នៅពេលបំពេញមុខងារមួយតម្លៃនៃប៉ារ៉ាម៉ែត្រទីតាំងនិងប៉ារ៉ាម៉ែត្រពិសេស # ត្រូវបានស្ដារឡើងវិញនូវតម្លៃដែលពួកគេមានមុនការអនុវត្តរបស់អនុគមន៍។
ឈ្មោះអនុគមន៍និងនិយមន័យអាចត្រូវបានរាយបញ្ជីជាមួយជម្រើស -f ទៅពាក្យបញ្ជាដែលបាន ប្រកាស ឬឋិតថេរ។ ជម្រើស -F ដើម្បី ប្រកាស ឬ វាយអក្សរ នឹងរាយឈ្មោះអនុគមន៍តែប៉ុណ្ណោះ។ អនុគមន៍អាចត្រូវបាននាំចេញដូច្នេះ subshells ដោយស្វ័យប្រវត្តិពួកគេត្រូវបានកំណត់ដោយជម្រើស -f ទៅ ការនាំចូល ។
មុខងារអាចត្រូវបានហៅខ្លួនឯង។ គ្មានដែនកំនត់លើចំនួននៃការហៅទូរស័ព្ទដែលហៅខ្លួនឯង។
ការវាយតម្លៃអាត្ម័ន
សែលអនុញ្ញាតឱ្យកន្សោមនព្វន្ធត្រូវបានវាយតម្លៃនៅក្នុងកាលៈទេសៈជាក់លាក់មួយ (សូមមើលពាក្យបញ្ជា builtin និងការបង្កើន នព្វន្ធ ) ។ ការវាយតម្លៃត្រូវបានធ្វើឡើងដោយចំនួនគត់ថេរដែលគ្មានការត្រួតពិនិត្យហួសពេកទោះបីជាការបែងចែកដោយ 0 ត្រូវបានជាប់ហើយដាក់ទង់ថាជាកំហុសក៏ដោយ។ សញ្ញាប្រមាណវិធីនិងអាទិភាពនិងទំនាក់ទំនងរបស់ពួកគេគឺដូចគ្នានឹងភាសា C ដែរ។ បញ្ជីសញ្ញាប្រមាណវិធីដូចខាងក្រោមត្រូវបានដាក់ជាក្រុមទៅជាកម្រិតនៃសញ្ញាប្រមាណវិធីអាទិភាពស្មើគ្នា។ កម្រិតត្រូវបានរាយក្នុងលំដាប់នៃការថយចុះអាទិភាព។
លេខសម្គាល់ id +
អថេរក្រោយនិងក្រោយការបន្ថយ
++ លេខសម្គាល់ - លេខសម្គាល់
អថេរបុរេកើនឡើងនិងមុនការកាត់បន្ថយ
- +
សញ្ញាដកនិងបូក
! ~
អវិជ្ជមានតក្កវិជ្ជានិងប៊ីត
**
និទស្សន្ត
* /%
គុណ, ផ្នែក, នៅសល់
+ -
បូកដក
<< >>
ប្តូរទិសឆ្វេងនិងស្តាំ
<=> = <>
ប្រៀបធៀប
==! =
សមភាពនិងវិសមភាព
&
bitwise AND
^
ប្រើផ្តាច់មុខប៊ីត OR
|
bitwise OR
&&
ឡូជីខល AND
||
តក្ក OR
expr ? expr : expr
ការវាយតម្លៃតាមលក្ខខណ្ឌ
= * = / =% = + = - = << = >> = & = ^ = | =
កិច្ចការ
expr1 , expr2
សញ្ញាក្បៀស
អថេរសែលត្រូវបានអនុញ្ញាតជាអង្គត្តិ។ ការពង្រីកប៉ារ៉ាម៉ែត្រត្រូវបានអនុវត្តមុនពេលវាយតំលៃកន្សោម។ ក្នុងកន្សោមអថេរសែលក៏អាចត្រូវបានយោងដោយឈ្មោះដោយមិនប្រើវាក្យសម្ព័ន្ធការពង្រីក។ តម្លៃនៃអថេរមួយត្រូវបានវាយតម្លៃជាកន្សោមនព្វន្ធនៅពេលវាត្រូវបានយោង។ អថេរសែលមិនត្រូវការគុណលក្ខណៈលេខរបស់វាត្រូវបានប្រើដើម្បីប្រើក្នុងកន្សោមទេ។
ចំនួនថេរដែលនាំមុខ 0 ត្រូវបានបកប្រែជាលេខគោលប្រាំបី។ លេខ 0x ឬ 0x នាំមុខគឺលេខដប់ប្រាំមួយ។ បើមិនដូច្នោះទេលេខយកទម្រង់ [ base # ] n ដែល មូលដ្ឋាន ជាលេខទសភាគរវាង 2 និង 64 តំណាងឱ្យគោលនព្វន្តហើយ n ជាចំនួននៅក្នុងមូលដ្ឋាននោះ។ ប្រសិនបើ គោល # ត្រូវបានលុបនោះគោល 10 ត្រូវបានប្រើ។ តួលេខដែលធំជាង 9 ត្រូវបានតំណាងដោយអក្សរតូចអក្សរធំនិង @ នៅក្នុងលំដាប់នោះ។ ប្រសិនបើ គោល មានតិចជាងឬស្មើនឹង 36 តួអក្សរតូចនិងអក្សរធំអាចត្រូវបានប្រើផ្លាស់ប្តូរគ្នាដើម្បីតំណាងឱ្យលេខរវាង 10 និង 35 ។
សញ្ញាប្រមាណវិធីត្រូវបានវាយតម្លៃតាមលំដាប់អាទិភាព។ អនុកន្សោមរងនៅក្នុងវង់ក្រចកត្រូវបានវាយតំលៃជាមុនហើយអាចបដិសេធក្បួនអាទិភាពខាងលើ។
ការពន្យល់តាមលក្ខខណ្ឌ
កន្សោមល័ក្ខខ័ណ្ឌត្រូវបានប្រើដោយពាក្យ [[ បរិវេណនិង ការសាកល្បង និង [ ពាក្យបញ្ជា builtin ដើម្បីសាកល្បងគុណលក្ខណៈឯកសារហើយអនុវត្តការប្រៀបធៀបខ្សែអក្សរនិងនព្វន្ធ។ សម្មតិកម្មត្រូវបានបង្កើតឡើងពីបឋមពីរឬពីរអង្គដូចខាងក្រោម។ ប្រសិនបើអាគុយម៉ង់ ឯកសារ ណាមួយនៅក្នុងបឋមគឺមានទំរង់ / dev / fd / n នោះនោះអ្នកពិពណ៌នាឯកសារត្រូវបានគូសធីក។ ប្រសិនបើអាគុយម៉ង់ ឯកសារ មួយនៃបឋមគឺមួយនៃ / dev / stdin , / dev / stdout ឬ / dev / stderr អ្នកពិពណ៌នាឯកសារ 0, 1 ឬ 2 ត្រូវបានធីក។
- ឯកសារ
ពិតប្រសិនបើ ឯកសារ មាន។
-b
ពិតប្រសិនបើ ឯកសារ មានហើយជាប្លុកពិសេសប្លុក។
-c
ពិតប្រសិនបើ ឯកសារ មានហើយជាឯកសារពិសេសរបស់តួអក្សរ។
-d
ពិតប្រសិនបើ ឯកសារ មាននិងជាថត។
-e ឯកសារ
ពិតប្រសិនបើ ឯកសារ មាន។
-f
ពិតប្រសិនបើ ឯកសារ មានហើយជាឯកសារធម្មតា។
-g ឯកសារ
ពិតប្រសិនបើ ឯកសារ មានហើយត្រូវបានកំណត់ក្រុម - លេខសម្គាល់។
-h
ពិតប្រសិនបើ ឯកសារ មានហើយជាតំណនិមិត្តសញ្ញា។
-k
ពិតប្រសិនបើ ឯកសារ មានហើយនិង 'ស្អិត' របស់វាត្រូវបានកំណត់។
-p
ពិតប្រសិនបើមាន ឯកសារ ហើយជាបំពង់ឈ្មោះ (FIFO) ។
-r ឯកសារ
ពិតប្រសិនបើ ឯកសារ មានហើយអាចអានបាន។
ឯកសារ -s
ពិតប្រសិនបើ ឯកសារ មាននិងមានទំហំធំជាងសូន្យ។
-t fd
ពិតប្រសិនបើអ្នកពិពណ៌នាឯកសារ fd បើកហើយសំដៅទៅលើស្ថានីយ។
- u
ពិតប្រសិនបើមាន ឯកសារ ហើយកំណត់ប៊ីតអ្នកប្រើកំណត់របស់វា។
-w ឯកសារ
ពិតប្រសិនបើមាន ឯកសារ ហើយអាចសរសេរបាន។
-x
ពិតប្រសិនបើមាន ឯកសារ ហើយអាចប្រតិបត្តិបាន។
-O ឯកសារ
ពិតប្រសិនបើ ឯកសារ មាននិងត្រូវបានគ្រប់គ្រងដោយលេខសម្គាល់អ្នកប្រើដែលមានប្រសិទ្ធភាព។
-G ឯកសារ
ពិតប្រសិនបើ ឯកសារ មាននិងត្រូវបានគ្រប់គ្រងដោយលេខសម្គាល់ក្រុមដែលមានប្រសិទ្ធភាព។
-L
ពិតប្រសិនបើ ឯកសារ មានហើយជាតំណនិមិត្តសញ្ញា។
-S
ពិតប្រសិនបើ ឯកសារ មានហើយជារន្ធមួយ។
-N
ពិតប្រសិនបើ ឯកសារ មានហើយត្រូវបានកែប្រែតាំងពីវាត្រូវបានអានចុងក្រោយ។
file1 - nt file2
ពិតប្រសិនបើ ឯកសារ 1 ថ្មីជាង (អាស្រ័យលើកាលបរិច្ឆេទកែប្រែ) ជាង ឯកសារ 2 ឬប្រសិនបើ ឯកសារ 1 មានហើយឯកសារ 2 មិន។
file1 - ot file2
ពិតប្រសិនបើ ឯកសារ 1 ចាស់ជាង ឯកសារ 2 ឬប្រសិនបើ ឯកសារ មាន 2 ហើយ ឯកសារ 1 មិន។
ឯកសារ 1 - ឯកសារ 2
ពិតប្រសិនបើ ឯកសារ 1 និង ឯកសារ 2 សំដៅទៅលើលេខកូដដូចគ្នានិងអ៊ីនណូត។
- ឈ្មោះ optname
ពិតប្រសិនបើជម្រើស optname ត្រូវបានបើក។ សូមមើលបញ្ជីនៃជម្រើសដែលស្ថិតនៅក្រោមសេចក្ដីពិពណ៌នានៃជម្រើស -o ទៅ សំណុំ ខាងក្រោម សំណុំ ។
-z
ពិតប្រសិនបើប្រវែង ខ្សែអក្សរ គឺសូន្យ។
-n ខ្សែអក្សរ
ខ្សែអក្សរ
ពិតប្រសិនបើប្រវែង ខ្សែអក្សរ មិនមែនសូន្យ។
string1 == string2
ពិតបើខ្សែអក្សរស្មើ។ = អាចត្រូវបានប្រើក្នុងកន្លែង == សម្រាប់ការអនុលោមតាម POSIX តឹងរ៉ឹង។
ខ្សែអក្សរ 1 ! = string2
ពិតប្រសិនបើខ្សែអក្សរមិនស្មើគ្នា។
string1 < string2
ពិតប្រសិនបើ ខ្សែអក្សរទី 1 តម្រៀបមុន ខ្សែអក្សរ 2 នៅក្នុងមូលដ្ឋានបច្ចុប្បន្ន។
string1 > string2
ពិតប្រសិនបើ ខ្សែអក្សរ 1 តម្រៀបបន្ទាប់ពី ខ្សែអក្សរ 2 នៅក្នុងមូលដ្ឋានបច្ចុប្បន្ន។
arg1 OP arg2
OP គឺជាផ្នែកមួយនៃ -eq , -ne , -lt , -le , -gt ឬ -ge ។ សញ្ញាប្រមាណវិធីនព្វន្ធទាំងនេះវិលត្រឡប់ពិតប្រសិនបើ arg1 ស្មើ, មិនស្មើ, តូចជាង, តូចជាងឬស្មើ, ធំជាងឬធំជាងឬស្មើទៅនឹង arg2 រៀងគ្នា។ Arg1 និង arg2 អាចជាចំនួនគត់វិជ្ជមានឬអវិជ្ជមាន។
ការពង្រីកបទបញ្ជាសាមញ្ញ
នៅពេលដែលពាក្យបញ្ជាសាមញ្ញត្រូវបានប្រតិបត្តិសែលដំណើរការការពង្រីកការផ្ទេរនិងការបញ្ជូនបន្តពីឆ្វេងទៅស្តាំ។
1 ។
ពាក្យដែលវិភាគបានសម្គាល់ថាជាកិច្ចការកំណត់ (ដែលមានឈ្មោះមុន) និងការប្តូរទិសត្រូវបានរក្សាទុកសម្រាប់ដំណើរការនៅពេលក្រោយ។
2 ។
ពាក្យដែលមិនមែនជាកិច្ចការកំណត់ឬប្តូរទិសត្រូវបានពង្រីក។ ប្រសិនបើពាក្យណាមួយនៅសល់បន្ទាប់ពីការពង្រីកពាក្យដំបូងត្រូវបានយកទៅជាឈ្មោះនៃពាក្យបញ្ជាហើយពាក្យដែលនៅសល់គឺជាអាគុយម៉ង់។
3 ។
ការប្តូរទិសដៅត្រូវបានអនុវត្តដូចដែលបានពណ៌នានៅខាងលើ REDIRECTION ។
4 ។
អត្ថបទបន្ទាប់ពី = ក្នុងការកំណត់អថេរនីមួយៗឆ្លងកាត់ការពង្រីកការសម្គាល់ការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធនិងការដកស្រង់ពាក្យសម្ដីមុនពេលត្រូវបានកំណត់ទៅអថេរ។
ប្រសិនបើគ្មានឈ្មោះលទ្ធផលពាក្យសម្ងាត់ការកំណត់អថេរប៉ះពាល់ដល់បរិស្ថានសែលបច្ចុប្បន្ន។ បើមិនដូច្នោះទេអថេរត្រូវបានបន្ថែមទៅបរិស្ថាននៃពាក្យបញ្ជាដែលបានប្រតិបត្តិហើយមិនប៉ះពាល់ដល់បរិស្ថានសែលបច្ចុប្បន្នទេ។ ប្រសិនបើកិច្ចការណាមួយព្យាយាមកំណត់តម្លៃទៅអថេរដែលបានតែអានកំហុសកើតឡើងហើយពាក្យបញ្ជាចេញជាមួយស្ថានភាពដែលមិនមែនសូន្យ។
ប្រសិនបើគ្មានឈ្មោះលទ្ធផលទេការប្តូរទិសត្រូវបានអនុវត្តប៉ុន្តែមិនប៉ះពាល់ដល់បរិស្ថានសែលបច្ចុប្បន្នទេ។ កំហុសការប្តូរទិសមួយបណ្តាលឱ្យពាក្យបញ្ជាចេញជាមួយស្ថានភាពដែលមិនមែនសូន្យ។
ប្រសិនបើមានឈ្មោះពាក្យសម្ងាត់ដែលនៅសល់បន្ទាប់ពីការពង្រីកការប្រតិបត្តិប្រតិបត្តិដូចបានរៀបរាប់ខាងក្រោម។ បើមិនដូច្នោះទេពាក្យបញ្ជាចេញ។ ប្រសិនបើការពង្រីកណាមួយមានពាក្យបញ្ជាជំនួសស្ថានភាពចេញរបស់ពាក្យបញ្ជាគឺជាស្ថានភាពចាកចេញនៃពាក្យជំនួសចុងក្រោយដែលបានអនុវត្ត។ ប្រសិនបើគ្មានពាក្យបញ្ជាជំនួសទេពាក្យបញ្ជានឹងចេញជាមួយស្ថានភាពសូន្យ។
ប្រតិបត្តិករបញ្ជា
បន្ទាប់ពីពាក្យបញ្ជាត្រូវបានបំបែកទៅជាពាក្យប្រសិនបើវាមានលទ្ធផលនៅក្នុងពាក្យបញ្ជាសាមញ្ញនិងបញ្ជីអាគុយម៉ង់ជម្រើសសកម្មភាពដូចខាងក្រោមត្រូវបានយក។
ប្រសិនបើឈ្មោះពាក្យបញ្ជាមិនមានសញ្ញា, សែលកំណត់ទីតាំងវា។ ប្រសិនបើមានមុខងារសែលដោយឈ្មោះនោះអនុគមន៍ដែលត្រូវបានហៅដូចដែលបានពិពណ៌នាខាងលើនៅក្នុង FUNCTIONS ។ ប្រសិនបើឈ្មោះមិនត្រូវគ្នានឹងមុខងារមួយនោះសែលនឹងស្វែងរកវានៅក្នុងបញ្ជីសែលដែលមានស្រាប់។ ប្រសិនបើរកឃើញការផ្គូផ្គងនោះវាត្រូវបានហៅ។
ប្រសិនបើឈ្មោះមិនមែនជាមុខងារសែលឬឋាននិយាយទេហើយមិនមានសញ្ញាទេនោះ bash រកធាតុនីមួយៗរបស់ PATH សម្រាប់ថតដែលមានឯកសារដែលអាចប្រតិបត្តិបានដោយឈ្មោះនោះ។ Bash ប្រើតារាងសញ្ញាដើម្បីចងចាំឈ្មោះផ្លូវពេញលេញនៃឯកសារដែលអាចប្រតិបត្តិបាន (សូមមើល សញ្ញា ក្រោម SHELL BUILTIN COMMANDS ខាងក្រោម) ។ ការស្វែងរកពេញលេញនៃថតក្នុង PATH ត្រូវបានអនុវត្តតែក្នុងករណីពាក្យបញ្ជាមិនត្រូវបានរកឃើញក្នុងតារាងសញ្ញាបៀ។ ប្រសិនបើការស្វែងរកមិនជោគជ័យសែលនឹងបោះពុម្ពសារកំហុសមួយហើយត្រឡប់ស្ថានភាពចាកចេញ 127 ។
ប្រសិនបើការស្វែងរកបានជោគជ័យឬប្រសិនបើឈ្មោះពាក្យបញ្ជាមានសញ្ញាឬច្រើនទៀតសែលប្រតិបត្តិកម្មវិធីដែលមានឈ្មោះនៅក្នុងបរិស្ថានប្រតិបត្តិដាច់ដោយឡែកពីគ្នា។ អាគុយម៉ង់ 0 ត្រូវបានកំណត់ទៅឈ្មោះដែលបានផ្ដល់ហើយអាគុយម៉ង់ដែលនៅសល់ចំពោះពាក្យបញ្ជាត្រូវបានកំណត់ទៅអាគុយម៉ង់ដែលបានផ្តល់បើមាន។
ប្រសិនបើការប្រតិបត្តិបរាជ័យពីព្រោះឯកសារមិនស្ថិតក្នុងទម្រង់ដែលអាចប្រតិបត្តិបានហើយឯកសារមិនមែនជាថតទេវាត្រូវបានសន្មតថាជា ស្គ្រីបសែល ជាឯកសារមានបញ្ជាសែល។ កូនសោមួយត្រូវបានបង្កើតដើម្បីប្រតិបត្តិវា។ subhell នេះ reinitializes ខ្លួនវាដូច្នេះប្រសិទ្ធិភាពគឺដូចជាប្រសិនបើសែលថ្មីមួយត្រូវបានគេហៅដើម្បីដោះស្រាយស្គ្រីបលើកលែងតែទីតាំងនៃពាក្យបញ្ជាដែលចងចាំដោយឪពុកម្តាយ (សូមមើល ប្រហោង ខាងក្រោមក្រោម បញ្ជា SHELL BUILTIN COMMANDS ) ត្រូវបានរក្សាទុកដោយកុមារ។
ប្រសិនបើកម្មវិធីជាឯកសារដែលចាប់ផ្ដើមដោយ #! ចំនុចដែលនៅសល់នៃជួរទីមួយបញ្ជាក់អំពីអ្នកបកប្រែសម្រាប់កម្មវិធី។ សែលប្រតិបត្តិអ្នកបកប្រែដែលបានបញ្ជាក់នៅលើប្រព័ន្ធប្រតិបត្តិការដែលមិនគ្រប់គ្រងទ្រង់ទ្រាយដែលអាចប្រតិបត្តិបានដោយខ្លួនឯង។ អាគុយម៉ង់ទៅអ្នកបកប្រែមានអាគុយម៉ង់ស្រេចចិត្តតែមួយបន្ទាប់ពីឈ្មោះអ្នកបកប្រែនៅលើបន្ទាត់ទីមួយនៃកម្មវិធីអមដោយឈ្មោះរបស់កម្មវិធីអមដោយអាគុយម៉ង់ពាក្យបញ្ជាបើមាន។
បរិយាកាសការប្រតិបត្តិវត្ថុបញ្ជា
សែលមាន បរិស្ថានប្រតិបត្តិ ដែលមានដូចខាងក្រោម:
*
បើកឯកសារដែលទទួលមរតកពីសែលនៅការហៅដូចដែលបានកែប្រែដោយការបញ្ជូនបន្តដែលបានផ្គត់ផ្គង់ទៅឱ្យ exec builtin
*
ថតការងារបច្ចុប្បន្នដែលកំណត់ដោយ cd , pushd ឬ popd ឬបន្តពីសែលនៅការហៅ
*
ម៉ាស់របៀបបង្កើតឯកសារដែលកំណត់ដោយ umask ឬទទួលបន្តពីមេរបស់សែល
*
អន្ទាក់បច្ចុប្បន្នកំណត់ដោយ អន្ទាក់
*
ប៉ារ៉ាម៉ែត្រសែលដែលត្រូវបានកំណត់ដោយការកំណត់អថេរឬជាមួយ សំណុំ ឬទទួលបន្តពីមេរបស់សែលនៅក្នុងបរិស្ថាន
*
មុខងារសែលដែលបានកំណត់ក្នុងកំឡុងពេលប្រតិបត្តិការឬបានបន្តពីមេរបស់សែលនៅក្នុងបរិស្ថាន
*
ជម្រើសត្រូវបានបើកនៅការហៅ (តាមលំនាំដើមឬជាមួយអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជា) ឬដោយ កំណត់
*
ជម្រើសបានបើកដោយ shopt
*
ឈ្មោះក្លែងក្លាយសែលត្រូវបានកំណត់ជាមួយ ឈ្មោះក្លែងក្លាយ
*
លេខសម្គាល់ដំណើរការជាច្រើនរួមមានទាំងកិច្ចការការងារផ្ទៃខាងក្រោយតម្លៃនៃ $$ និងតម្លៃនៃ $ PPID
នៅពេលដែលពាក្យបញ្ជាសាមញ្ញក្រៅពី function builtin ឬ shell ត្រូវបានប្រតិបត្តិវាត្រូវបានហៅនៅក្នុងបរិស្ថានប្រតិបត្តិដោយឡែកដែលមានដូចខាងក្រោម។ លុះត្រាតែបានកត់សម្គាល់ផ្សេងពីនេះតម្លៃត្រូវបានទទួលពីតំណសែល។
*
ឯកសារបើករបស់សែលបូកការកែប្រែនិងបន្ថែមដែលបានបញ្ជាក់ដោយការបញ្ជូនបន្តទៅពាក្យបញ្ជា
*
ថតការងារបច្ចុប្បន្ន
*
ម៉ាស់របៀបបង្កើតឯកសារ
*
អថេរសែលដែលបានសម្គាល់សម្រាប់ការនាំចេញរួមជាមួយអថេរដែលបាននាំចេញសម្រាប់ពាក្យបញ្ជាបានហុចទៅក្នុងបរិស្ថាន
*
អន្ទាក់ដែលចាប់បានដោយសែលត្រូវបានកំណត់ទៅតម្លៃដែលបានទទួលពីមេរបស់សែលហើយអន្ទាក់ដែលមិនអើពើដោយសែលត្រូវបានមិនអើពើ
ពាក្យបញ្ជាដែលត្រូវបានហៅក្នុងបរិស្ថានដាច់ដោយឡែកនេះមិនអាចប៉ះពាល់បរិស្ថានប្រតិបត្តិរបស់សែលទេ។
ការជំនួសពាក្យបញ្ជានិងពាក្យបញ្ជាអសមកាលត្រូវបានហៅក្នុងបរិស្ថាន subshell ដែលជាស្ទួនបរិស្ថានបរិវេណលើកលែងតែអន្ទាក់ដែលចាប់បានដោយសែលត្រូវបានកំណត់ទៅតម្លៃដែលសែលបានទទួលពីមេនៅពេលហៅ។ ពាក្យបញ្ជា Builtin ដែលត្រូវបានគេហៅថាជាផ្នែកនៃបំពង់មួយក៏ត្រូវបានប្រតិបត្តិក្នុងបរិវេណរង។ ការផ្លាស់ប្តូរដែលកើតឡើងចំពោះបរិយាកាស subshell មិនអាចប៉ះពាល់បរិស្ថានប្រតិបត្តិរបស់សែលទេ។
ប្រសិនបើពាក្យបញ្ជាត្រូវបានបន្តដោយវត្ថុបញ្ជានិងវត្ថុការងារមិនសកម្មនោះការបញ្ចូលស្តង់ដារលំនាំដើមសម្រាប់ពាក្យបញ្ជាគឺជាឯកសារទទេ / dev / null ។ បើមិនដូច្នោះទេពាក្យបញ្ជាដែលបានដកស្រង់គឺអ្នកទទួលសេចក្តីពិពណ៌នានៃការហៅសែលដែលបានកែប្រែដោយការបញ្ជូនបន្ត។
សូមមើលផងដែរ
Bash Reference Manual , Brian Fox និង Chet Ramey
បណ្ណាល័យ Gnu Readline , Brian Fox និង Chet Ramey
បណ្ណាល័យប្រវត្តិ Gnu , Brian Fox និង Chet Ramey
ចំណុចប្រទាក់ប្រព័ន្ធប្រតិបត្តិការចល័ត (POSIX) ផ្នែកទី 2: សែលនិងឧបករណ៍ប្រើប្រាស់ , IEEE
sh (1), ksh (1), csh (1)
emacs (1), vi (1)
readline (3)