
рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╢реЗрд▓ рдЖрдЬ рддрдХ рдЗрд╕рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдирд╣реАрдВ рдЦреЛрддрд╛ рд╣реИред рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рдФрд░ рдЖрд╕рд╛рди рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдИ рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЕрдирдЬрд╛рди рд╣реИрдВред
рдореИрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдлрд┐рд░ рднреА, рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ POSIX рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ ksh / bash / zsh рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реЛрдЧреАред
1. рдЪрд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╢реЗрд▓ рдореЗрдВ рдЖрдк рддрд╛рд░, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (:
[[ 2 -eq 3 ]] [[ "test" == "test" ]] [[ $VAR -eq 3 ]]
рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк, рдПрдХ рд░реИрдВрдбрдо рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рдж (рдореИрдВ VAR рд╕реЗ рдкрд╣рд▓реЗ $ рднреВрд▓ рдЧрдпрд╛), рдореБрдЭреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдбрд┐рдЬрд╝рд╛рдЗрди рдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ VAR рдореВрд▓реНрдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рдореИрдВ $ рднреВрд▓ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк VAR рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреА рдЦреБрдж рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪрд╛рдирд╛ рдирд╣реАрдВ рднреВрд▓реЗ:
$ V=V ; [[ V -eq 12 ]] -bash: [[: V: expression recursion level exceeded (error token is "V")
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдпрд╣ рдПрдХ рдИрд╕реНрдЯрд░ рдЕрдВрдбреЗ рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред рд╡рд┐рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдореИрди рдмреИрд╢ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред[[рдФрд░]] рдХреЗ рдмреАрдЪ рдХреЗ рд╢рдмреНрджреЛрдВ рдкрд░; рдЯрд┐рд▓реНрдб рд╡рд┐рд╕реНрддрд╛рд░, рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЪрд░
рд╡рд┐рд╕реНрддрд╛рд░, рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╡рд┐рд╕реНрддрд╛рд░, рдХрдорд╛рдВрдб рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдФрд░ рдЙрджреНрдзрд░рдг рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
...
рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░
...
рдореВрд▓реНрдпрд╛рдВрдХрди ARITHMETIC EVALUATION рдХреЗ рддрд╣рдд рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
...
рдЖрд░реНрдХрдЯрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдХрди
...
рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рднреАрддрд░, рд╢реЗрд▓ рдЪрд░ рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдирд╛рдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2. рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХреЗ рдмрд┐рдирд╛ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рдбрд┐рдЬрд╛рдЗрди рд╣реИ:
do_something | while read LINE ; do export VAR_N=${LINE##%*} ; done
рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж VAR_N рдХреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд╣реЗрд▓реА рдмрдирд╛рдиреА рдкрдбрд╝рддреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЪрд░ рдЕрдм рдорд╛рддрд╛-рдкрд┐рддрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред рдЪрдХреНрд░ рд╕реЗ рд╣рдореЗрдВ рдЬрд┐рди рдЪрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╣реБрдд рдкрд╕реАрдирд╛ рдмрд╣рд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдк, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ:
VAR=$(cycle) VAR_N=$(echo "$VAR"|sed 'magic_sed')
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдмрджрд╕реВрд░рддред рд╣рд╛рдВ, рдФрд░ рдЬреАрд╡рди рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдб, рдкрд░реНрд▓ рдФрд░ рдЕрдиреНрдп рдЦреБрд╢рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдлреЛрди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡реЗ рд╕рднреА рдХреНрдпреЛрдВ рд╣реИрдВ, рдЕрдЧрд░ рдЖрдк рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╕реБрдВрджрд░ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
OLD__IFS="$IFS" IFS='~'
рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдл рд╣реИ, рдФрд░ рдЕрдЧрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЬреНрдпрд╛рджрд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рд╣рд░ рдмрд╛рд░ рдирд┐рдпрдорд┐рдд рдЖрдЗрдЯрдо рд░реАрдореЗрдХ рдХрд░рдирд╛ред
3. рдкрд╛рдЗрдк рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫрд┐рдкрд╛рдПрдВ
рдХрднреА-рдХрднреА рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдбреЗрдЯрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрд╛рдЗрдк рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕ рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЫрд┐рдкреЗ рд╣реБрдП рдбреЗрдЯрд╛ рдХреЛ stderr рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ stderr рд╕реЗ рд╡рд╛рдкрд╕ stdin рдкрд░ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$ ( { echo DATA ; echo HIDDEN_DATA >&2 ; } | sed 's/^/MODIFIED_/' ) 2>&1 | sed s/$/_CATCHED/ HIDDEN_DATA_CATCHED MODIFIED_DATA_CATCHED
4. рдореИрдВ рдЯреАрдореЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
Ls рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХрдорд╛рдВрдб рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ (рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдЧреЗ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рднреА рдкреНрд░реЗрдореА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрддрд┐рд╣рд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ рдХрд╕реНрдЯрдо-рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдЖрдк рдмреИрдХрдлрд╝рд┐рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ: "рдЖрдк рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдФрд░ рдХреНрдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?" (рдореИрдВ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрддрд░ рдЫрд┐рдкрд╛рдКрдВрдЧрд╛) (:
рдпрджрд┐ рдЖрдк рдЯреАрдореЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛fc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдорджрдж fc рдореЗрдВ рд╡рд┐рд╡рд░рдг, рдпрд╣ рдХрд┐рд╕реА рднреА рд╢реЗрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
5. рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ if .. then .. else .. fi
рд╕реЗ рдЕрд▓рдЧ рд╣реИ .. && .. || ..
.. && .. || ..
рдХреБрдЫ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЙрддреНрд╕рд╛рд╣реА рдХреЛрдб рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВред рдмрд╛рдж рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдордЬрд╝реЗрджрд╛рд░ рд╣реИред
рдпреЗ рджреЛ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рд░реНрдл рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
if $(condition); then com_1; else com_2; fi condition && com_1 || com_2
рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, com_2 рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рд╕реНрдерд┐рддрд┐ рдЭреВрдареА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, com_2 рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдЭреВрдареА рд╣реЛ, рд╕рд╛рде рд╣реА рд╕рд╛рде com_1 рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛? рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
$ if true ; then false ; else echo 'hello' ; fi $ true && false || echo 'hello' hello
рдЦреИрд░, рд╢рд╛рдпрдж рдпрд╣ рд╕рдм рд╣реИред рдореИрдВ рдЕрдкрдиреА рдкреНрд░рд┐рдп рд╕реАрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣реБрдЖред рд╢рд╛рдпрдж рджреВрд╕рд░реА рдмрд╛рд░ (: