
рдХреНрдпрд╛ рдЖрдк рд╣рд░ рджрд┐рди рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ? рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХреБрдЫ рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд▓рд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рдЬрдЯрд┐рд▓ рд╕реАрдорд╛ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдврд╝рддреЗ рд╣реИрдВред
рдиреЛрдЯ: рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд▓реЗрдЦрдХ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ 10. рдкрд░ рд▓рд┐рдирдХреНрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ bash 4.4.12 (1) -release рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЕрд▓рдЧ рд╣реИред
рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо
рдЯрд╛рд╕реНрдХ 1$ cat 1 The cake is a lie! Wanted! Cake or alive $ cat 1 | head | tail | sed -e 's/alive/dead/g' | tee | wc -l > 1
рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдлрд╛рдЗрд▓ 1 рдореЗрдВ рдХрд┐рддрдиреА рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрдВрдЧреА?
рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрдорд╛рдВрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд▓реЗрдХрд┐рди рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, bash рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ 1
рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ cat
рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╛рдлрд╝ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓ рджреЗрддреА рд╣реИред
рдЯрд╛рд╕реНрдХ реи $ cat file1 I love UNIX! $ cat file2 I don't like UNIX $ cat file1 <file2
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИI love UNIX!
рд╡реНрдпрд╛рдЦреНрдпрд╛рдЬрдм рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯрдб рдкрд░ рд╣рдереМрдбрд╝рд╛ рдорд╛рд░рддреЗ рд╣реИрдВред
рдЯрд╛рд╕реНрдХ 3 $ cat file Just for fun $ cat file 1>&2 2>/dev/null
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИJust for fun
рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдХ рдЧрд▓рдд рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо
1>&2
рдкрд╣рд▓реЗ рдереНрд░реЗрдб рдХреЛ рджреВрд╕рд░реЗ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗ рдЯреАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджрд░реНрдЬ рдХрдорд╛рдВрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдкреНрд░рд╡рд╛рд╣ рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
рдмреИрд╢ рдЕрдиреБрдХреНрд░рдо
1>&2
рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реЗрд▓ 2 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрд▓ 1 рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ:
рдЕрдиреБрдХреНрд░рдо
2>/dev/null
рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж
2>/dev/null
рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реЗрд▓ 2 рдХрд╛ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЕрдиреНрдп рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ:
0 | 1 | 2 |
stdin | stderr | / рджреЗрд╡ / рдЕрд╢рдХреНрдд |
рдмреИрд╢ рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд╛рда рдкрд╛рддреЗ рд╣реИрдВред
рдЯрд╛рд╕реНрдХ 4Stdout, рдФрд░ Stderr рдЖрдЙрдЯрдкреБрдЯ рдХреЛ stdout рдЖрдЙрдЯрдкреБрдЯ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, stdout рдХреЛ?
рдЬрд╡рд╛рдм рд╣реИ4>&1 1>&2 2>&4
рд╡реНрдпрд╛рдЦреНрдпрд╛рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдХреА рддрд░рд╣ рд╣реА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ
рдЯрд╛рд╕реНрдХ 5рджреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ test.sh
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
$ ls 1 2 3 test.sh $ ./test.sh 1 2 3
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИ1 2 3
1 2 3
ls: cannot access '1 2 3': No such file or directory
1 2 3
рд╡реНрдпрд╛рдЦреНрдпрд╛рдЙрджреНрдзрд░рдг рдХреЗ рдмрд┐рдирд╛, рдЪрд░ $ * рдФрд░ $ @ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рджрд┐рдП рдЧрдП рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ, рдкреНрд░рдХрдЯреАрдХрд░рдг рд╡рд┐рдзрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ: $ * "$ 1 $ 2 $ 3" тАЛтАЛрдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ $ @ рдмрджрд▓реЗ рдореЗрдВ "$ 1" "$ 2" "$ 3" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ "1 2 3" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрд▓рдПрд╕ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЯрд╛рд╕реНрдХ 6рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, 755 рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдФрд░ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ
-c
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
$ PATH рдЪрд░ рд╢реВрдиреНрдп рдХрд░реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
$ PATH= $ -c "echo SURPRISE"
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдпрджрд┐ рдЖрдк рдЕрдВрддрд┐рдо рдЖрджреЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдЬрд╡рд╛рдм рд╣реИрдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ SURPRISE
, рджреВрд╕рд░реА рдмрд╛рд░ echo SURPRISE
рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрджрд┐ PATH рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╢реЗрд▓ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред -рд╕реА рдмрд╕ рд╕реНрдерд┐рдд рд╣реИред рдЪреВрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╢реЗрд▓рдВрдЧ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреАрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдХрдЯреНрдареА рд╣реИ:
<shebang> <filename> <args>
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реА рдХрдорд╛рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
/bin/bash -c "echo SURPRISE"
рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рджреВрд╕рд░реА рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрд▓ рдХреИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ -c рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рджреЛ рдореАрдирдВрдЧреЛрдВ рдХреЛ рд╢реЗрдмрдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдЪрд░
рдЯрд╛рд╕реНрдХ 7 $ ls file $ cat <$(ls) $ cat <(ls)
рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИрдкрд╣рд▓рд╛ рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ - рдлрд╝рд╛рдЗрд▓ рдирд╛рдоред
рд╡реНрдпрд╛рдЦреНрдпрд╛рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
cat <file
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
<(ls)
рдХреЛ рдПрдХ рдирд╛рдорд┐рдд рдкрд╛рдЗрдк рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЗрдирдкреБрдЯ рд╕реЗ stdout ls рдФрд░ рд╕реНрдЯрдб рдХреИрдЯ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдлреЙрд░реНрдо рд▓реЗрдЧрд╛:
cat /dev/fd/xx
рдЯрд╛рд╕реНрдХ 8 $ TEST=123456 $ echo ${TEST%56}
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рд╡реНрдпрд╛рдЦреНрдпрд╛рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде, рдкреИрдЯрд░реНрди рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (# - рдЪрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ; ## - рдЪрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓рд╛рд▓рдЪ; рдЪрд░ рдХреЗ рдЕрдВрдд рд╕реЗ%;% - рдЪрд░ рдХреЗ рдЕрдВрдд рд╕реЗ рд▓рд╛рд▓рдЪ) - рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдмрд░рдХрд░рд╛рд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
$ TEST=file.ext $ echo ${TEST%.ext} file
рдЯрд╛рд╕реНрдХ 9 $ echo ${friendship:-magic}
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИрдпрджрд┐ рдореИрддреНрд░реА рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реАред рдЕрдиреНрдпрдерд╛, рдЬрд╛рджреВред
рд╡реНрдпрд╛рдЦреНрдпрд╛рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ, рдЗрд╕ рдЬрд╛рджреВ рдХреЛ "рдкрд░реЗрд╢рд╛рди рдпрд╛ рдЕрд╢рдХреНрдд" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЪрд░ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢
рдЯрд╛рд╕реНрдХ 10 while true; false; do echo Success done
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдЬрд╡рд╛рдм рд╣реИрдХреБрдЫ рдирд╣реАрдВ
рд╡реНрдпрд╛рдЦреНрдпрд╛рдЬрдм рдЖрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреВрд░реЗ рдХреНрд░рдо рдХреЛ рд░рдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдкрд░рд┐рдгрд╛рдо (рд░рд┐рдЯрд░реНрди рдХреЛрдб) рдХреЛ рдЕрдВрддрд┐рдо рдЖрджреЗрд╢ рдореЗрдВ рд╣реА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рд▓реВрдк рднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЯрд╛рд╕реНрдХ 11 $ false && true || true && false && echo 1 || echo 2
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рд╡реНрдпрд╛рдЦреНрдпрд╛рд╕реНрдкрд╖реНрдЯ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХрд╛ рдХреЗрд╡рд▓ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
((((false && true) || true) && false) && echo 1) || echo 2 (((false || true) && false) && echo 1) || echo 2 ((true && false) && echo 1) || echo 2 (false && echo 1) || echo 2 false || echo 2 echo 2
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рдкреАрдПрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред