рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ: рдПрдХ рдкреВрд░реНрдг Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдЕрдкрдиреА рдкрд╣рд▓реА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рд╕реАрдЦреЗрдВ: variables, functions, loops, рдФрд░ conditionals тАФ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕рд╣рд┐рддред
┬╖ 5 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

рд╢реЗрд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╢реЗрд▓ рдирд╛рдо рдЗрд╕рд▓рд┐рдП рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреА рд╕рдмрд╕реЗ рдмрд╛рд╣рд░реА рдкрд░рдд рд╣реЛрддреА рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдореНрдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдЗрдирдкреБрдЯ рдХреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрдирдкреБрдЯ рдСрдкрд░реЗрд╢рди рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ (CLI) рдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлреЗрд╕ (GUI) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ, рд╢реЗрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ

  • рдПрдХ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╢реЗрд▓ рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ
  • рд╣рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ shebang рд▓рд╛рдЗрди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ: #!/bin/bash
  • рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЙрд╕реЗ bash script.sh рд╕реЗ рдЪрд▓рд╛рдПрдБ, рдпрд╛ chmod +x script.sh рд╕реЗ executable рдмрдирд╛рдПрдБ рдФрд░ ./script.sh рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдБ
  • Bash рдореЗрдВ variables, user input, functions, loops (for/while) рдФрд░ conditionals (if/else) рдХрд╛ рд╕рдорд░реНрдерди рд╣реИ
  • рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ: рдХрд╛рд░реНрдп рд╕реНрд╡рдЪрд╛рд▓рди, рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрди, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди, рдФрд░ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдВрд╕

рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдЪрдп

рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдпрд╡рд╛рди рдХреМрд╢рд▓ рд╣реИред рдпрд╣рд╛рдБ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕реЗ рд╣рдорд╛рд░рд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд╢реЗрд▓ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рдРрд╕реЗ рдХреНрд░рдо рд╕реЗ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд┐рдЦрдХрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдирд╛ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЗрд╕ рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдЦрдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдХрд╛рдлреА рд╡рд┐рдХрд╛рд╕-рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝реЗрдЧрд╛ тАФ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рд╕реНрд╡рддрдГ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред

Unix рдФрд░ Linux рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реЗрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд╢реЗрд╖ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Bourne Again SHell (bash) рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ Bourne shell рдХрд╛ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ Unix-рдЖрдзрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдЬрд┐рдирдореЗрдВ Linux рд╢рд╛рдорд┐рд▓ рд╣реИ) рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдирдП рд╣реИрдВ? bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдмреБрдирд┐рдпрд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ Introduction to Shell рдХреЛрд░реНрд╕ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпрд╛ рд╣реИ?

Bash рдПрдХ Unix рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИ рдЬреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЬреИрд╕реЗ рдлрд╝рд┐рд▓реНрдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдп рдмрддрд╛рддреА рд╣реИ, рд╡реИрд╕реЗ рд╣реА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ bash рд╢реЗрд▓ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХрд╛ рд╣реИред

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

рдореБрдЦреНрдп рдЕрдВрддрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реЗ .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рднреА рдЪрд▓ рд╕рдХрддреА рд╣реИрдВ)ред

bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреА рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ тАЬshebangтАЭ рдЬреЛ рд╣рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, shebang bash рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ рдПрдХ absolute path рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ bash рдХреЗ тАЬ#тАЭ рдФрд░ тАЬ!тАЭ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж bash рд╢реЗрд▓ рдкрде рд╕реЗ рдмрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Linux рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди-рд╕рд╛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реИред

рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБ:

  • рдПрдХ Unix-рдЖрдзрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (Linux рдпрд╛ macOS), рдпрд╛ Windows рдЬрд┐рд╕рдореЗрдВ Git Bash рдпрд╛ Windows Subsystem for Linux (WSL) рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ
  • рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдЬрд╛рдирдХрд╛рд░реА (рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓рдирд╛, ls рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛, cd рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрджрд▓рдирд╛)
  • рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП nano, vim, рдпрд╛ VS Code рдЬреИрд╕рд╛ рдХреЛрдИ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ

рд╣рдо рдЖрдкрдХреЛ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ тАЬHello WorldтАЭ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБрдЧреЗред рдпрджрд┐ рдЖрдк bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Introduction to Bash Scripting рдХреЛрд░реНрд╕ рджреЗрдЦреЗрдВред┬а

рд╕реНрдЯреЗрдк 1: рдирдИ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ┬а

рдкрд╣рд▓рд╛ рдХрджрдо .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИред Linux рдпрд╛ macOS рдкрд░, рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдирд┐рдореНрди рдЪрд▓рд╛рдПрдБ:

touch hello_world.sh

Windows рдкрд░, рдЖрдк Git Bash рдпрд╛ Windows Subsystem for Linux (WSL) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ рджреЛрдиреЛрдВ touch рдХрдорд╛рдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ (VS Code, Notepad, nano) рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрд╡ рдХрд░реЗрдВред

рд╕реНрдЯреЗрдк 2: рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди-рд╕рд╛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдпрд╣ Bash рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ shebang рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред┬а

#!/bin/bash

рд╕реНрдЯреЗрдк 3: рдХрдорд╛рдВрдбреНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рд╣рдорд╛рд░реА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп тАЬHello World!тАЭ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдИ рдкрдВрдХреНрддрд┐ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ echo рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрдВ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реИред

echo "Hello World!" 

рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдлрд╝рд╛рдЗрд▓ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ Git Bash рдЦреЛрд▓реЗрдВред┬а┬а

рдиреЛрдЯ: рдЖрдк Git downloads рд╕реЗ Git Bash рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреБрд░реВрдк Git рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдиреЗрдВред┬а

рдЕрдЧрд▓рд╛, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:┬а

bash hello_world.sh

рдЗрд╕рд╕реЗ тАЬHello World!тАЭ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 1 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред┬а

bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ тАЬHello World!тАЭ рд▓реМрдЯрддрд╛ рд╣реИред

рдЪрд┐рддреНрд░ 1: рд╣рдорд╛рд░реА Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

рд╕реНрдЯреЗрдк 4: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ executable рдмрдирд╛рдирд╛

рд╣рд░ рдмрд╛рд░ bash рдХрдорд╛рдВрдб рд╕реЗ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк chmod рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ executable рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

chmod +x hello_world.sh
./hello_world.sh

chmod +x рдХрдорд╛рдВрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ execute рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред ./ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рд╢реЗрд▓ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореМрдЬреВрджрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдЪрд▓рд╛рдПрдБред рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╡рд┐рддрд░рд┐рдд рдФрд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдпрд╣ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ тАФ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕реА рддрд░рд╣ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИрдВред

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ рдпреВрдЬрд╝рд░ рдЗрдирдкреБрдЯ рдХреИрдкреНрдЪрд░ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдЕрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рд░рд▓ тАЬHello World!тАЭ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо bash рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЗрдирдкреБрдЯ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ activity рдЬреЗрдирд░реЗрдЯрд░ рдмрдирд╛рдПрдБрдЧреЗ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЙрдирдХрд╛ рдирд╛рдо рдкреВрдЫреЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ array рдореЗрдВ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреМрд░ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЪреБрдирдХрд░ рдЙрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред┬а

рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг тАЬBash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВтАЭ рдЬреИрд╕реЗ рд╣реА рд╣реИрдВ тАФ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЙрди рдХрдорд╛рдВрдбреНрд╕ рдореЗрдВ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВрдЧреЗред┬а

  1. рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдПрдХ рдирдИ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред
touch generate-activity.sh
  1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ shebang рдбрд╛рд▓рдХрд░ bash рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
#!/bin/bash
  1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рдХрдорд╛рдВрдб рд▓рд┐рдЦреЗрдВ рдФрд░ рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗрд╡ рдХрд░реЗрдВред

рдЕрдм рдЬрдм рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдЕрдкрдиреА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рддреЛ рд╣рдореЗрдВ рдЪрд┐рддреНрд░ 2 рдЬреИрд╕рд╛ рд╣реА рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред┬а

#!/bin/bash

# Greet user and request their name
echo "The activity generator"
read -p "What is your name? " name

# Create an array of activities
activity[0]="Football"
activity[1]="Table Tennis"
activity[2]="8 Ball Pool"
activity[3]="PS5"
activity[4]="Blackjack"

array_length=${#activity[@]} # Store the length of the array
index=$(($RANDOM % $array_length)) # Randomly select an index from 0 to array_length

# Invite the user to join you participate in an activity
echo "Hi" $name, "would you like to play" ${activity[$index]}"?"
read -p "Answer: " answer

generate-activitysh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рджрд░реНрд╢рдирдЪрд┐рддреНрд░ 2: generate-activity.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рджрд░реНрд╢рдиред

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдФрд░ рджреЛрдмрд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, = рдЪрд┐рдиреНрд╣ рдХреЗ рджреЛрдиреЛрдВ рдУрд░ рдмрд┐рдирд╛ рд╕реНрдкреЗрд╕ рдХреЗ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдорд╛рди рдХреЛ рдирд╛рдо рд╕реЗ рдкрд╣рд▓реЗ $ рд▓рдЧрд╛рдХрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ:

#!/bin/bash

# Define variables
greeting="Hello"
user_name="Alice"
current_year=$(date +%Y)  # Command substitution

# Use variables
echo "$greeting, $user_name!"
echo "The current year is $current_year."

bash рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рдирд┐рдпрдо:

  • рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо case-sensitive рд╣реЛрддреЗ рд╣реИрдВ: name рдФрд░ NAME рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИрдВ
  • рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп = рдЪрд┐рдиреНрд╣ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрдкреЗрд╕ рди рджреЗрдВ
  • рдХрд┐рд╕реА рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд╕рдмреНрд╕реНрдЯрд┐рдЯреНрдпреВрд╢рди $(command) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • рдРрд╕реЗ рдорд╛рди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдореЗрдВ рд╕реНрдкреЗрд╕ рд╣реЛрдВ, рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдбрдмрд▓ рдХреЛрдЯреНрд╕ ("$var") рдореЗрдВ рд░рдЦреЗрдВ

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдБ

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рд╛рде рдмрд╛рдБрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ Python рдореЗрдВ Functions рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВред рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рднреА рдмрдирд╛рддрд╛ рд╣реИред┬а

рдПрдХ bash рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд┐рд╕реЗ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ bash рдлрд╝рдВрдХреНрд╢рдВрд╕ рдереЛрдбрд╝реЗ рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдЙрджрд╛., bash рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХреЛрдИ рдорд╛рди рд▓реМрдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ)ред┬а

рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП bash рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд▓рд┐рдЦрдХрд░, рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЛрд╖реНрдардХ рдФрд░ рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рд▓рд┐рдП рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрдЬрд╝ рд▓рд┐рдЦрдХрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ bash рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:┬а

# Most common way to write a bash function.
example_function () {
  commands
}

bash рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╝реЙрд░реНрдореИрдЯ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдЖрд░рдХреНрд╖рд┐рдд bash рдХреАрд╡рд░реНрдб function рд╕реЗ рдХрд░реЗрдВ, рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рд▓рд┐рдП рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрдЬрд╝ тАФ рдпрд╣рд╛рдБ рдХреЛрд╖реНрдардХреЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреАред┬а

# Another way to write a bash function.
function example_function {
  commands
}

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХрдорд╛рдВрдбреНрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗред bash рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдирд╡реЛрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░:┬а

#!/bin/bash

# A hello world bash function
hello_world () {
  echo "Hello World!"
}

# Invoking the hello_world function
hello_world

рдКрдкрд░, рд╣рдордиреЗ рдПрдХ hello_world рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬреЛ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рдиреЗ рдкрд░ тАЬHello World!тАЭ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

bash рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдкрд╛рд╕ рдХрд░рдирд╛

рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд╡реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВред bash рдореЗрдВ, рд╣рдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд╡реИрд╕реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреИрд╕реЗ рдХрд┐ рдЖрдк Python, Julia рдЖрджрд┐ рдЬреИрд╕реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, bash рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рд░рдЦрдХрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ тАФ рдХрдИ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд╣реЛрдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкреЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВред

рд╕рд╛рд░ рд░реВрдк рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЛ positional parameters рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░реАрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ ($1, $2, ..., $n) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред┬а

#!/bin/bash
greet () {
  echo "Hello $1 $2"
}

greet "John" "Doe" 

рдКрдкрд░ рджреА рдЧрдИ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ greet рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕, John рдФрд░ Doe, рдкрд╛рд╕ рдХрд┐рдПред рдЕрдм рдЬрдм bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рддреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

Hello John Doe

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ рд▓реВрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

рд▓реВрдкреНрд╕ рдЖрдкрдХреЛ рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдиреЗ рджреЗрддреЗ рд╣реИрдВред Bash рдореЗрдВ for рд▓реВрдкреНрд╕ рдФрд░ while рд▓реВрдкреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред

For рд▓реВрдкреНрд╕

for рд▓реВрдк рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдпрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реЗрдВрдЬ рдкрд░ рдЗрдЯрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

#!/bin/bash

# Loop over a list
for fruit in apple banana cherry; do
  echo "I like $fruit"
done

# Loop over a numeric range
for number in {1..5}; do
  echo "Number: $number"
done

While рд▓реВрдкреНрд╕

while рд▓реВрдк рддрдм рддрдХ рдЪрд▓рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЙрд╕рдХреА рд╢рд░реНрдд true рдХрд╛ рдорд╛рди рджреЗрддреА рд╣реИ:

#!/bin/bash

count=1
while [ $count -le 5 ]; do
  echo "Count: $count"
  count=$((count + 1))
done

Bash рдореЗрдВ тАЬIfтАЭ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рд▓рд┐рдЦрдирд╛

тАЬIfтАЭ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдбреАрд╢рдирд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдХрдерди рд╕рд╣реА рд╕рд┐рджреНрдз рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╢рд░реНрдд рдЪрд▓реЗрдЧреАред рдпрд╣ рдХреНрд╖рдорддрд╛ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред┬а

bash рдореЗрдВ, рд╣рдо рдХрдВрдбреАрд╢рдирд▓ рдХреЛ if рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ fi (if рдХреЛ рдЙрд▓реНрдЯрд╛ рд▓рд┐рдЦрдХрд░) рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ if рдХрдВрдбреАрд╢рдирд▓реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:┬а

#!/bin/bash

read -p "Give me a number: " number
if [ $number -gt 10 ];
then
  echo "Your number is greater than 10."
fi

рдКрдкрд░ рджреА рдЧрдИ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ 10 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ тАЬYour number is greater than 10.тАЭ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЪрд┐рддреНрд░ 3 рдореЗрдВ 10 рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред┬а

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ if рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

рдЪрд┐рддреНрд░ 3: Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ тАЬifтАЭ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

рдирд┐рд╖реНрдХрд░реНрд╖

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдмрдВрдзрди, рдФрд░ рдбреЗрдЯрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреМрд╢рд▓ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рдореВрд▓ рдирд┐рд░реНрдорд╛рдг рдЦрдВрдб рдХрд╡рд░ рдХрд┐рдП: shebang рд▓рд╛рдЗрди, рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдмрдирд╛рдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛, рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕, рд▓реВрдкреНрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдХрдВрдбреАрд╢рдирд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред

рдЕрдкрдиреА bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдпрд╛рддреНрд░рд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпреЗ рдЕрдЧрд▓реЗ рдХрджрдо рджреЗрдЦреЗрдВ:

  • рд╣реИрдВрдбреНрд╕-рдСрди рдЕрднреНрдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдХреМрд╢рд▓ рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Introduction to Bash Scripting рдХреЛрд░реНрд╕ рдХрд░реЗрдВ
  • cron рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рд╕реНрд╡рддрдГ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ
  • рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореИрдирд┐рдкреБрд▓реЗрд╢рди, рдлрд╝рд╛рдЗрд▓ I/O, рдФрд░ рдПрдЧреНрдЬрд╝рд┐рдЯ рдХреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░реЗрдВ
  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдСрдЯреЛрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: рдмреИрдХрдЕрдкреНрд╕, рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╣реЗрд▓реНрде рдЪреЗрдХреНрд╕
  • рдЕрдкрдиреА рдХреМрд╢рд▓ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╣рдорд╛рд░рд╛ Data Processing in Shell рдХреЛрд░реНрд╕ рд▓реЗрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБ

Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ FAQs

bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпрд╛ рд╣реИ?

рдПрдХ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ Bash рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ .sh рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд, bash рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдПрдХ shebang рд▓рд╛рдЗрди (#!/bin/bash) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреМрди-рд╕рд╛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдЪрд▓рд╛рдКрдБ?

bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

  • bash рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП: bash script.sh тАФ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ execute рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА
  • рдЗрд╕реЗ executable рдмрдирд╛рдирд╛: рдПрдХ рдмрд╛рд░ chmod +x script.sh рдЪрд▓рд╛рдХрд░ execute рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдлрд┐рд░ ./script.sh рд╕реЗ рдЪрд▓рд╛рдПрдБ

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╡рд┐рддрд░рд┐рдд рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ shebang рд▓рд╛рдЗрди рдХреНрдпрд╛ рд╣реИ?

shebang (#!/bin/bash) bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди-рд╕рд╛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред #! рдЕрдХреНрд╖рд░ ("hash-bang") рдХреЗ рдмрд╛рдж Bash рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ absolute path (/bin/bash) рдЖрддрд╛ рд╣реИред рдмрд┐рдирд╛ shebang рдХреЗ, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд┐рд░ рднреА рдЪрд▓ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЬреЛ рднреА рд╢реЗрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╣реЛрдЧрд╛, рд╡рд╣реА рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд┐рд╕реНрдЯрдореНрд╕ рдкрд░ рдЕрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

bash рдФрд░ shell рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА Unix рд╢реЗрд▓ (sh, bash, zsh, ksh, рдЖрджрд┐) рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Bash рд╢реЗрд▓ (Bourne Again SHell) рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред Bash рдЕрдзрд┐рдХрд╛рдВрд╢ Linux рд╕рд┐рд╕реНрдЯрдореНрд╕ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рд╣реИ рдФрд░ POSIX рд╢реЗрд▓ рдорд╛рдирдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ arrays, arithmetic expansion, рдФрд░ рдЙрдиреНрдирдд string manipulation рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдЬрдм рд▓реЛрдЧ "рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд╛ рд╣реА рдорддрд▓рдм рд▓реЗрддреЗ рд╣реИрдВред

рдореИрдВ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреИрд╕реЗ рдбрд┐рдХреНрд▓реЗрдпрд░ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБ?

рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ = рдЪрд┐рдиреНрд╣ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрд┐рдирд╛ рд╕реНрдкреЗрд╕ рдХреЗ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рдбрд┐рдХреНрд▓реЗрдпрд░ рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЗ рдкрд╣рд▓реЗ $ рд▓рдЧрд╛рдХрд░ рдЙрд╕рдХреЗ рдорд╛рди рддрдХ рдкрд╣реБрдБрдЪреЗрдВ:

name="Alice"
echo "Hello, $name!"

рдореБрдЦреНрдп рдирд┐рдпрдо: рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо case-sensitive рд╣реЛрддреЗ рд╣реИрдВ, = рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрдкреЗрд╕ рди рджреЗрдВ, рдФрд░ рдЬрдм рдорд╛рди рдореЗрдВ рд╕реНрдкреЗрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реЛрдВ, рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдбрдмрд▓ рдХреЛрдЯреНрд╕ ("$var") рдореЗрдВ рд░рдЦреЗрдВред рдХрд┐рд╕реА рдХрдорд╛рдВрдб рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $(command) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╡рд┐рд╖рдп