рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдмреИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдЗрд╕ рд╢реЗрд▓ рдХреА рд╕рдмрд╕реЗ рдЕрддреБрд▓рдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢рд╛рдпрдж, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрд░рд┐рдпрд░реНрд╕ рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ)ред рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рднреА рдХреЛ рдмреИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдЕрджреНрднреБрдд рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЙрдирдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрднреНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрдИ рд▓рд╛рдн рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреБрдиреМрддреА рдЬреЛ рдмреИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдЖрддреА рд╣реИ
рдмреИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмреИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдЕрдХреНрд╕рд░ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдбреЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрдорд╛рдВрдб рдХреЗ рд╡рд╛рдХреНрдпрдЧрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдиреБрдЕрд▓" рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред
рдЙрдкрд░реЛрдХреНрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдмреИрд╢ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреА рдХрдВрдкрдиреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рдирдП рдЖрдВрддрд░рд┐рдХ рд╕реЗрдЯ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдЕрдзреНрдпрдпрди рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдЖрдкрдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЯреВрд▓ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ "рдЯреВрд▓рдмреЙрдХреНрд╕" C ++ рдХреЛрдб рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдПрдХ "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рд╣рдо рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЬрд╛рдВрдЪ рдХреЗ рддрд╣рдд рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
./pipeline
рдореВрд▓ рдмрд╛рддреЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╕рд░рдгреА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ -
--threads
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░рдгреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
allThreads=(1 2 4 8 16 32 64 128)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рднреА рддрддреНрд╡ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рддрд╛рд░реЛрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реА рд╕рд╛рд░рдгреА рдХреА рдШреЛрд╖рдгрд╛ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ:
myArray=(1 2 "three" 4 "five")
рдЕрдиреНрдп рдмреИрд╢ рдЪрд░ рдХреЗ рд╕рд╛рде, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐
=
рдЪрд┐рд╣реНрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдмреИрд╢ рдЙрд╕ рдЪрд░ рдирд╛рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣
=
рдЗрд╕рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╣реЛрдЧрд╛!
рдЕрдм рдЬрдм рд╣рдордиреЗ рдПрд░реЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐
echo $allThreads
рдХреЗрд╡рд▓ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рд░рдгрд┐рдпреЛрдВ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдмреИрд╢ рдореЗрдВ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
type="article" echo "Found 42 $type"
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ
$type
рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╢рдмреНрдж рдХреЗ рдмрд╛рдж, рдЕрдХреНрд╖рд░
s
рдЬреЛрдбрд╝реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЗрд╕ рдкрддреНрд░ рдХреЛ рдХреЗрд╡рд▓ рдЪрд░ рдирд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪрд░ рдХреЛ
$types
рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд┐рдиреНрди рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк
echo "Found 42 "$type"s"
рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ:
echo "Found 42 ${type}s"
, рдЬреЛ рд╣рдореЗрдВ рдмреИрд╢ рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЪрд░ рдирд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ ES6 рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ
рдкреИрдЯрд░реНрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ)ред
рдЕрдм рд╡рд╛рдкрд╕ arrays рдХреЗ рд▓рд┐рдПред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕реЛрдВ рдХреА рдЖрдорддреМрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡реЗ рдЖрдкрдХреЛ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдкрддреНрд░ рдХреА рдПрдХ рдХрдорд╛рдВрдб
echo ${allThreads[1]}
рд╕рд░рдгреА рдХреЗ рджреВрд╕рд░реЗ рддрддреНрд╡ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧреАред рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмреИрд╢
[1]
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмреИрд╢ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ, рдХрдо рд╕реЗ рдХрдо, рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдХрдИ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреЛ рдФрд░ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рддрдм рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдореЗрдВ рд╕рд░рдгреА рдХреЗ
$i
рд╡реЗрдВ рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ
$i
рд╡рд╛рдВрдЫрд┐рдд рдЪрд░ рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓рд╛ рдПрдХ рдЪрд░ рд╣реИред рдЖрдк рдЗрд╕ рддрддреНрд╡ рдХреЛ рд╕рд░рдгреА рд╕реЗ рдлрд╛рд░реНрдо рдХреЗ
echo ${allThreads[$i]}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕рдореЗрдВ
@
рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЗрд╕реЗ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ)ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
echo ${allThreads[@]}
ред
рдЫреЛрд░реЛрдВ рдореЗрдВ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдкрд░ Iterating
рдПрд░реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ рдХрд┐ рд╡реЗ рдПрд░реЗ рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХреЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд
pipeline
рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд░рдирд╛, рдЬреЛ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкреНрд░рддреАрдХ рд╣реИ рдФрд░ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
for t in ${allThreads[@]}; do ./pipeline --threads $t done
рд▓реВрдкреНрд╕ рдореЗрдВ рдРрд░реЗ рдЗрдВрдбрд┐рдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛
рдЕрдм рдХреНрд░рдордмрджреНрдз рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рд░рдгреА рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
for i in ${!allThreads[@]}; do ./pipeline --threads ${allThreads[$i]} done
рдЖрдЗрдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдлреЙрд░реНрдо
${allThreads[@]}
рдХрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рдг рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╣рдо рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдЪрд┐рд╣реНрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ
${!allThreads[@]}
рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░рдгреА рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 0 рд╕реЗ 7 рддрдХ) рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд▓реВрдк рдХреЗ
for
, рд╕рд░рдгреА рдХреЗ рд╕рднреА рдЗрдВрдбреЗрдХреНрд╕реЛрдВ рдкрд░ рдЪрд░
$i
рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд▓реВрдк рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рд╕рд░рдгреА рдХреЗ рддрддреНрд╡ рдЬреЛ
--thread
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ
${allThreads[$i]}
рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕рднреА рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВред рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЬрдм рд▓реВрдк рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рджреЛрдиреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╣рдореЗрдВ рдмрдЪрд╛рдПрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдФрд░ рдЗрд╕реЗ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдореЗрдВ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╕реЗред
рднрд░рдиреЗ рдХрд╛ рдЕрд░реНрд░
рдЕрдм рддрдХ, рд╣рдордиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ
pipeline
рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ -
--threads
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ
--threads
рд╣реИред рдЕрдм рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЙрд╕рдореЗрдВ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рджреВрд╕рд░реЗ рдРрд░реЗ рдореЗрдВ рд╕реЗрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред
рдЙрдкрдпреЛрдЧреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдЗрдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ bash рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрджреЗрд╢ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
output=$( ./my_script.sh )
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж,
myscript.sh
$output
рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЗрд╕реЗ
$output
рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░рд╛ рдирд┐рд░реНрдорд╛рдг, рдЬреЛ рдмрд╣реБрдд рдЬрд▓реНрдж рдХрд╛рдо рдЖрдПрдЧрд╛, рд╣рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдбреЗрдЯрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
myArray+=( "newElement1" "newElement2" )
рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛
рдЕрдм, рдЕрдЧрд░ рдЖрдкрдиреЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрдЦреА рдЧрдИ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рд╕рд░рдгреА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдХрдорд╛рдВрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
allThreads=(1 2 4 8 16 32 64 128) allRuntimes=() for t in ${allThreads[@]}; do runtime=$(./pipeline --threads $t) allRuntimes+=( $runtime ) done
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рд╣рдордиреЗ рдмрд╕ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛ рдЕрд▓рд░реНрдЯ
рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдкрдиреА рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╣рдо рдПрдХ
cron
рдЬреЙрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧреА рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
# - logPaths=("api.log" "auth.log" "jenkins.log" "data.log") logEmails=("jay@email" "emma@email" "jon@email" "sophia@email") # for i in ${!logPaths[@]}; do log=${logPaths[$i]} stakeholder=${logEmails[$i]} numErrors=$( tail -n 100 "$log" | grep "ERROR" | wc -l ) # 5 if [[ "$numErrors" -gt 5 ]]; then emailRecipient="$stakeholder" emailSubject="WARNING: ${log} showing unusual levels of errors" emailBody="${numErrors} errors found in log ${log}" echo "$emailBody" | mailx -s "$emailSubject" "$emailRecipient" fi done
рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЯреЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдВрдмреА рдмрд╛рддрдЪреАрдд рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ,
JSONPlaceholder рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░реАрдХреНрд╖рдг API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕реЗрд╡рд╛ рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдХреЗ рдИрдореЗрд▓ рдкрддреЗ рдкрд░ рдЗрд╕рдХреЗ рдХреЛрдб рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
endpoint="https://jsonplaceholder.typicode.com/comments" allEmails=() # 10 for postId in {1..10}; do # API response=$(curl "${endpoint}?postId=${postId}") # jq JSON allEmails+=( $( jq '.[].email' <<< "$response" ) ) done
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ
jq рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ JSON рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо jq рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ - рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВред
рдмреИрд╢ рдпрд╛ рдкрд╛рдпрдерди?
Arrays - рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рди рдХреЗрд╡рд▓ рдмреИрд╢ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдкрд╛рд╕ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдердиред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХ рдкрд░ рдХрд┐рддрдирд╛ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реАрдзреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдмрд╛рд╢ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрд╕ рдШрдЯрдирд╛ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЖрдк рдкрд╛рдпрдерди рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдкрд░ рджреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмреИрд╢ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрдПрдЧрд╛:
import subprocess all_threads = [1, 2, 4, 8, 16, 32, 64, 128] all_runtimes = [] # for t in all_threads: cmd = './pipeline --threads {}'.format(t) # subprocess , p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) output = p.communicate()[0] all_runtimes.append(output)
рд╢рд╛рдпрдж рдмреИрд╢ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди, рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛, рдХрдо рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдЖрдк рдкрд╛рдпрдерди рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╣рдордиреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИ рдФрд░ рдХреБрдЫ рдирдпрд╛ рд╣реИред
рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг | рд╡рд┐рд╡рд░рдг |
arr=() | рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдмрдирд╛рдПрдБ |
arr=(1 2 3) | рдРрд░реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди |
${arr[2]} | рдХрд┐рд╕реА рд╕рд░рдгреА рдХрд╛ рддреАрд╕рд░рд╛ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
${arr[@]} | рд╕рднреА рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
${!arr[@]} | рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
${#arr[@]} | рд╕рд░рдгреА рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ |
arr[0]=3 | рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ |
arr+=(4) | рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ |
str=$(ls) | рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ ls рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реЗрд╡ рдХрд░рдирд╛ |
arr=( $(ls) ) | рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ ls рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ |
${arr[@]:s:n} | рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рд╕реЗ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
|
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдмреИрд╢ рд╕рд░рдгрд┐рдпрд╛рдВ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЬреЛ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрди рд╡рд┐рд╖рдорддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдмреИрд╢ рдПрд░реЗрдЬрд╝ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЕрдирдЧрд┐рдирдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпреЗ рд╕рд░рдгрд┐рдпрд╛рдБ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
