рдЖрдк рдмреИрд╢ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ?


рдХреНрдпрд╛ рдЖрдк рд╣рд░ рджрд┐рди рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ? рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХреБрдЫ рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд▓рд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рдЬрдЯрд┐рд▓ рд╕реАрдорд╛ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдврд╝рддреЗ рд╣реИрдВред

рдиреЛрдЯ: рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд▓реЗрдЦрдХ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ 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 рдореЗрдВ рдХрд┐рддрдиреА рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрдВрдЧреА?

рдЬрд╡рд╛рдм рд╣реИ
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 рдкрд╣рд▓реЗ рдереНрд░реЗрдб рдХреЛ рджреВрд╕рд░реЗ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗ рдЯреАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджрд░реНрдЬ рдХрдорд╛рдВрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдкреНрд░рд╡рд╛рд╣ рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
012
stdinstdoutstderr

рдмреИрд╢ рдЕрдиреБрдХреНрд░рдо 1>&2 рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реЗрд▓ 2 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрд▓ 1 рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ:
012
stdinstderrstderr

рдЕрдиреБрдХреНрд░рдо 2>/dev/null рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж 2>/dev/null рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реЗрд▓ 2 рдХрд╛ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЕрдиреНрдп рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ:
012
stdinstderr/ рджреЗрд╡ / рдЕрд╢рдХреНрдд

рдмреИрд╢ рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд╛рда рдкрд╛рддреЗ рд╣реИрдВред

рдЯрд╛рд╕реНрдХ 4
Stdout, рдФрд░ Stderr рдЖрдЙрдЯрдкреБрдЯ рдХреЛ stdout рдЖрдЙрдЯрдкреБрдЯ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, stdout рдХреЛ?

рдЬрд╡рд╛рдм рд╣реИ
4>&1 1>&2 2>&4

рд╡реНрдпрд╛рдЦреНрдпрд╛
рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдХреА рддрд░рд╣ рд╣реА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ


рдЯрд╛рд╕реНрдХ 5

рджреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ test.sh

 #!/bin/bash ls $* ls $@ ls "$*" ls "$@" 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

 $ 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 рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

 #!/bin/bash echo $1 

$ 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} 

рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдЬрд╡рд╛рдм рд╣реИ
1234

рд╡реНрдпрд╛рдЦреНрдпрд╛
рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде, рдкреИрдЯрд░реНрди рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (# - рдЪрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ; ## - рдЪрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓рд╛рд▓рдЪ; рдЪрд░ рдХреЗ рдЕрдВрдд рд╕реЗ%;% - рдЪрд░ рдХреЗ рдЕрдВрдд рд╕реЗ рд▓рд╛рд▓рдЪ) - рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдмрд░рдХрд░рд╛рд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

 $ 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 

рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдЬрд╡рд╛рдм рд╣реИ
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 


рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рдкреАрдПрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi413935/


All Articles