Sh - ពាក្យបញ្ជាលីនុច - ពាក្យបញ្ជាយូនីក

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 ស្តង់ដារ។ ទាំងនេះគឺជាខ្សែដែលត្រូវមានការបកប្រែភាសានៅពេលដែលមូលដ្ឋានបច្ចុប្បន្នមិនមែន CPOSIX ។ នេះមានន័យថាជម្រើស -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)) ឬមួយបានចាប់ផ្ដើមដោយជម្រើស -iPS1 ត្រូវបានកំណត់ហើយ $ - រួមបញ្ចូល 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 ពិតប្រសិនបើ expression1expression2 ពិត។

និង & || សញ្ញាប្រមាណវិធីមិនវាយតម្លៃ 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

លទ្ធផលពង្រីកត្រូវបានដកស្រង់តែមួយដូចជាសញ្ញាដុល្លារមិនមានវត្តមាន។

ខ្សែអក្សរដែលបានដកស្រង់ទ្វេដងដោយសញ្ញាប្រាក់ដុល្លារ ( $ ) នឹងធ្វើអោយឃ្លាត្រូវបានបកប្រែទៅតាមមូលដ្ឋានបច្ចុប្បន្ន។ ប្រសិនបើមូលដ្ឋានបច្ចុប្បន្នគឺ CPOSIX សញ្ញាប្រាក់ដុល្លារត្រូវបានមិនអើពើ។ ប្រសិនបើឃ្លាត្រូវបានបកប្រែនិងជំនួសជំនួសវិញត្រូវបានដកស្រង់ទ្វេ។

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 ។

MAIL

ប្រសិនបើប៉ារ៉ាម៉ែត្រនេះត្រូវបានកំណត់ទៅជាឈ្មោះឯកសារហើយអថេរ 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 SSFF 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}}

ការពង្រីករណបបង្ហាញពីភាពមិនឆបគ្នាបន្តិចជាមួយនឹងកំណែប្រវត្តិសាស្ត្ររបស់ shsh មិនចាត់ទុកការបើកឬបិទដង្កៀបជាពិសេសនៅពេលដែលវាលេចឡើងជាផ្នែកនៃពាក្យហើយការពារវានៅក្នុងលទ្ធផល។ 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 មិនត្រូវបានកំណត់ឬតម្លៃរបស់វាគឺពិតជា , លំនាំដើមនោះលំដាប់នៃតួអក្សរ IFS ណាមួយដើម្បីកំណត់សញ្ញា។ ប្រសិនបើ IFS មានតម្លៃក្រៅពីលំនាំដើមនោះលំដាប់នៃដកឃ្លាតួអក្សរ ដកឃ្លា និង ថេប ត្រូវបានមិនអើពើនៅពេលចាប់ផ្តើមនិងបញ្ចប់ពាក្យដែលមានចន្លោះតួអក្សរចន្លោះនៅក្នុង IFS (តួអក្សរចន្លោះ IFS ) ។ តួអក្សរណាមួយនៅក្នុង IFS ដែលមិនមែនចន្លោះមើល IFS រួមជាមួយតួអក្សរចន្លោះ IFS ដែល នៅជិតគ្នាកំណត់វាល។ លំដាប់នៃតួអក្សរចន្លោះ IFS ត្រូវបានចាត់ទុកជាសញ្ញាកំណត់ព្រំដែនផងដែរ។ ប្រសិនបើតម្លៃនៃ 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 , pushdpopd ឬបន្តពីសែលនៅការហៅ

*

ម៉ាស់របៀបបង្កើតឯកសារដែលកំណត់ដោយ 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)