ShellCheck 0.9 рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ

рд╢реЗрд▓рдЪреЗрдХ 0.9 рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ рдЬреА bash, sh, ksh рдЖрдгрд┐ рдбреЕрд╢рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреАрд▓ рддреНрд░реБрдЯреА рдУрд│рдЦрдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рд╣рд╛рд╕реНрдХреЗрд▓рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ GPLv3 рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ. Vim, Emacs, VSCode, Sublime, Atom рдЖрдгрд┐ GCC-рд╕реБрд╕рдВрдЧрдд рдПрд░рд░ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░реЗ рд╡рд┐рд╡рд┐рдз рдлреНрд░реЗрдорд╡рд░реНрдХрд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

ShellCheck 0.9 рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ, рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ

рд╣реЗ рдХреЛрдбрдордзреАрд▓ рджреЛрдиреНрд╣реА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рддреНрд░реБрдЯреА рдУрд│рдЦрдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реА рддреНрд░реБрдЯреА рджрд░реНрд╢рд╡рд┐рддреЛ рдЖрдгрд┐ рдЕрд░реНрдерд╡рд┐рд╖рдпрдХ рд╕рдорд╕реНрдпрд╛, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рд╡реНрдпрддреНрдпрдп рдпреЗрдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рд╡рд░реНрддрдирд╛рдд рд╡рд┐рд╕рдВрдЧрддреА рдЙрджреНрднрд╡рддрд╛рдд. рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдбрдерд│реЗ, рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдЖрдгрд┐ рддреЛрдЯреЗ рджреЗрдЦреАрд▓ рдУрд│рдЦреВ рд╢рдХрддреЛ рдЬреНрдпрд╛рдореБрд│реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЕрдкрдпрд╢ рдпреЗрдК рд╢рдХрддреЗ.

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

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

рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ:

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛