ShellCheck 0.9 рдЙрдкрд▓рдмреНрдз рдЫ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ

ShellCheck 0.9 рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рдореЛрдЪрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдХреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИ рдЬрд╕рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдорд╛ bash, sh, ksh рд░ рдбреНрдпрд╛рд╕рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреЗрд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб Haskell рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ GPLv3 рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рддред рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ Vim, Emacs, VSCode, Sublime, Atom, рд░ GCC-рдХрдореНрдкреНрдпрд╛рдЯрд┐рдмрд▓ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдЩрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВрд╕рдБрдЧ рдПрдХреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред

ShellCheck 0.9 рдЙрдкрд▓рдмреНрдз рдЫ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ

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

рдкрддреНрддрд╛ рд▓рдЧрд╛рдЗрдПрдХрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╡рд░реНрдЧрд╣рд░реВ рдордзреНрдпреЗ, рд╣рд╛рдореАрд▓реЗ рд╡рд┐рд╢реЗрд╖ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВ рдЫреЛрдбреНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЙрджреНрдзрд░рдгрд╣рд░реВрдорд╛ рдлреНрд░реЗрдо рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ, рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ, рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рдЧрд▓рдд рдкреНрд░рдпреЛрдЧ, рд╕рдордп рд░ рдорд┐рддрд┐рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ, рд░ рд╢реБрд░реБрдЖрддреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "[[$foo==0 ]]" рддреБрд▓рдирд╛ рдЧрд░реНрджрд╛ рдЦрд╛рд▓реА рдард╛рдЙрдБрд╣рд░реВрдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐, рдЦрд╛рд▓реА рдард╛рдЙрдБрд╣рд░реВрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ "var = 42" рд╡рд╛ "$foo=42" рдЕрд╕рд╛рдЗрди рдЧрд░реНрджрд╛ $ рдкреНрд░рддреАрдХрдХреЛ рд╕рдЩреНрдХреЗрдд, рдЪрд░рд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧред рдЙрджреНрдзрд░рдг рдмрд┐рдирд╛ "рдЗрдХреЛ $1", "tr -cd '[a-zA-Z0-9]' рдорд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЛ рд╕рдВрдХреЗрдд",

рдердк рд░реВрдкрдорд╛, рдпрд╕рд▓реЗ рдХреЛрдб рд╢реИрд▓реА рд╕реБрдзрд╛рд░ рдЧрд░реНрди, рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╣рдЯрд╛рдЙрди, рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╛рдЙрди рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВрдХреЛ рдЖрдЙрдЯрдкреБрдЯрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, "рдЗрдХреЛ $[1+2]" рдХреЛ рд╕рдЯреНрдЯрд╛ "$((..))" рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдиреЗрдЫ, рдирд┐рд░реНрдорд╛рдг 'rm -rf "$STEAMROOT/"*' рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдиреЗрдЫред рд░ рдореВрд▓ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдореЗрдЯрд╛рдЙрди рд╕рдХреНрд╖рдо рдЫ рдпрджрд┐ рдЪрд░ рднрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ $STEAMROOT, рд░ "echo {1..10}" рдХреЛ рдкреНрд░рдпреЛрдЧ рдбреНрдпрд╛рд╕ рд░ sh рд╕рдБрдЧ рдЕрд╕рдВрдЧрдд рд░реВрдкрдорд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░рд┐рдиреЗрдЫред

рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛:

  • 'local readonly foo' рдЬрд╕реНрддрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХрд╛ рд▓рд╛рдЧрд┐ рдЪреЗрддрд╛рд╡рдиреА рдердкрд┐рдпреЛред
  • рдЕрдиреБрдкрд▓рдмреНрдз рдЖрджреЗрд╢рд╣рд░реВ рдмрд╛рд░реЗ рдЪреЗрддрд╛рд╡рдиреА рдердкрд┐рдпреЛред
  • рдмреНрдпрд╛рдХрд▓рд┐рдЩреНрдХрд╣рд░реВ рдмрд╛рд░реЗ рдЪреЗрддрд╛рд╡рдиреА рдердкрд┐рдпреЛ 'x=1 y=$x' рдШреЛрд╖рдгрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдЪреЗрддрд╛рд╡рдиреА рдердкрд┐рдпреЛ рдпрджрд┐ $? echo, printf, [ ], [[ ]] рд░ test рдХреЛ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
  • ((..)) inarray [((idx))]=val рд╣рдЯрд╛рдЙрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдердкрд┐рдпреЛред
  • рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВрдорд╛ рджреЛрд╣реЛрд░реЛ рдХреЛрд╖реНрдардХрд╣рд░реВ рдЬреЛрдбреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдердкрд┐рдпреЛред
  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ a[(x+1)]=val рдорд╛ рдХреЛрд╖реНрдардХрд╣рд░реВ рд╣рдЯрд╛рдЙрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдердкрд┐рдпреЛред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди