Learning the bash Shell 2nd Edition [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Learning the bash Shell 2nd Edition [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
توضیحات
افزودن یادداشت جدید

D.2 BNF for bash

The following is the syntax of bash 2.0 in Backus-Naur Form (BNF):

<letter> ::= a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
 A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
 
<digit> ::= 0|1|2|3|4|5|6|7|8|9
 
<number> ::= <digit>
 | <number> <digit>
 
<word> ::= <letter>
 | <word> <letter>
 | <word> '_'
 
<word_list> ::= <word>
 | <word_list> <word>
 
<assignment_word> ::= <word> '=' <word>
 
 
<redirection> ::= '>' <word>
 | '<' <word>
 | <number> '>' <word>
 | <number> '<' <word>
 | '>>' <word>
 | <number> '>>' <word>
 | '<<' <word>
 | <number> '<<' <word>
 | '<&' <number>
 | <number> '<&' <number>
 | '>&' <number>
 | <number> '>&' <number>
 | '<&' <word>
 | <number> '<&' <word>
 | '>&' <word>
 | <number> '>&' <word>
 | '<<-' <word>
 | <number> '<<-' <word>
 | '>&' '-'
 | <number> '>&' '-'
 | '<&' '-'
 | <number> '<&' '-'
 | '&>' <word>
 | <number> '<>' <word>
 | '<>' <word>
 | '>|' <word>
 | <number> '>|' <word>
 
<simple_command_element> ::= <word>
 | <assignment_word>
 | <redirection>
 
<redirection_list> ::= <redirection>
 | <redirection_list> <redirection>
 
<simple_command> ::= <simple_command_element>
 | <simple_command> <simple_command_element>
 
<command> ::= <simple_command>
 | <shell_command>
 | <shell_command> <redirection_list>
 
<shell_command> ::= <for_command>
 | <case_command>
 | while <compound_list> do <compound_list> done
 | until <compound_list> do <compound_list> done
 | <select_command>
 | <if_command>
 | <subshell>
 | <group_command>
 | <function_def>
 
<for_command> ::= for <word> <newline_list> do <compound_list> done
 | for <word> <newline_list> '{' <compound_list> '}'
 | for <word> ';' <newline_list> do <compound_list> done
 | for <word> ';' <newline_list> '{' <compound_list> '}'
 | for <word> <newline_list> in <word_list> <list_terminator>
 <newline_list> do <compound_list> done
 | for <word> <newline_list> in <word_list> <list_terminator>
 <newline_list> '{' <compound_list> '}'
 
<select_command> ::= select <word> <newline_list> do <list> done
 | select <word> <newline_list> '{' <list> '}'
 | select <word> ';' <newline_list> do <list> done
 | select <word> ';' <newline_list> '{' list '}'
 | select <word> <newline_list> in <word_list>
 <list_terminator> <newline_list> do <list> done
 | select <word> <newline_list> in <word_list>
 <list_terminator> <newline_list> '{' <list> '}'
 
<case_command> ::= case <word> <newline_list> in <newline_list> esac
 | case <word> <newline_list> in <case_clause_sequence>
 <newline_list> esac
 | case <word> <newline_list> in <case_clause> esac
 
<function_def> ::= <word> '(' ')' <newline_list> <group_command>
 | function <word> '(' ')' <newline_list> <group_command>
 | function <word> <newline_list> <group_command>
 
<subshell> ::= '(' <compound_list> ')'
 
<if_command> ::= if <compound_list> then <compound_list> fi
 | if <compound_list> then <compound_list> else <compound_list> fi
 | if <compound_list> then <compound_list> <elif_clause> fi
 
<group_command> ::= '{' <list> '}'
 
<elif_clause> ::= elif <compound_list> then <compound_list>
 | elif <compound_list> then <compound_list> else <compound_list>
 | elif <compound_list> then <compound_list> <elif_clause>
 
<case_clause> ::= <pattern_list>
 | <case_clause_sequence> <pattern_list>
 
<pattern_list> ::= <newline_list> <pattern> ')' <compound_list>
 | <newline_list> <pattern> ')' <newline_list>
 | <newline_list> '(' <pattern> ')' <compound_list>
 | <newline_list> '(' <pattern> ')' <newline_list>
 
<case_clause_sequence> ::= <pattern_list> ';;'
 | <case_clause_sequence> <pattern_list> ';;'
 
<pattern> ::= <word>
 | <pattern> '|' <word>
 
 
<list> ::= <newline_list> <list0>
 
<compound_list> ::= <list>
 | <newline_list> <list1>
 
<list0> ::= <list1> '\n' <newline_list>
 | <list1> '&' <newline_list>
 | <list1> ';' <newline_list>
 
<list1> ::= <list1> '&&' <newline_list> <list1>
 | <list1> '||' <newline_list> <list1>
 | <list1> '&' <newline_list> <list1>
 | <list1> ';' <newline_list> <list1>
 | <list1> '\n' <newline_list> <list1>
 | <pipeline_command>
 
<list_terminator> ::= '\n'
 | ';'
 
<newline_list> ::=
 | <newline_list> '\n'
 
<simple_list> ::= <simple_list1>
 | <simple_list1> '&'
 | <simple_list1> ';'
 
<simple_list1> ::= <simple_list1> '&&' <newline_list> <simple_list1>
 | <simple_list1> '||' <newline_list> <simple_list1>
 | <simple_list1> '&' <simple_list1>
 | <simple_list1> ';' <simple_list1>
 | <pipeline_command>
 
<pipeline_command> ::= <pipeline>
 | '!' <pipeline>
 | <timespec> <pipeline>
 | <timespec> '!' <pipeline>
 | '!' <timespec> <pipeline>
 
<pipeline> ::=
 <pipeline> '|' <newline_list> <pipeline>
 | <command>
 
<time_opt> ::= '-p'
 
<timespec> ::= time
 | time <time_opt>
 
.XE "BNF (Backus-Naur Form)"
.XE "bash" "syntax, BNF form of"

/ 104