ShellCheck 0.9 ื–ืžื™ืŸ, ืžื ืชื— ืกื˜ื˜ื™ ืขื‘ื•ืจ ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช

ืคื•ืจืกื ืฉื—ืจื•ืจื• ืฉืœ ืคืจื•ื™ืงื˜ ShellCheck 0.9, ื”ืžืคืชื— ืžืขืจื›ืช ืœื ื™ืชื•ื— ืกื˜ื˜ื™ ืฉืœ ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช ื”ืชื•ืžื›ืช ื‘ื–ื™ื”ื•ื™ ืฉื’ื™ืื•ืช ื‘ืกืงืจื™ืคื˜ื™ื ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืชื›ื•ื ื•ืช ืฉืœ bash, sh, ksh ื•-dash. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘- Haskell ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ GPLv3. ืจื›ื™ื‘ื™ื ืžืกื•ืคืงื™ื ืœืื™ื ื˜ื’ืจืฆื™ื” ืขื Vim, Emacs, VSCode, Sublime, Atom ื•ืžืกื’ืจื•ืช ืฉื•ื ื•ืช ื”ืชื•ืžื›ื•ืช ื‘ื“ื™ื•ื•ื— ืฉื’ื™ืื•ืช ืชื•ืื GCC.

ShellCheck 0.9 ื–ืžื™ืŸ, ืžื ืชื— ืกื˜ื˜ื™ ืขื‘ื•ืจ ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช

ื”ื•ื ืชื•ืžืš ื‘ื–ื™ื”ื•ื™ ื”ืŸ ืฉื’ื™ืื•ืช ืชื—ื‘ื™ืจ ื‘ืงื•ื“, ื”ืžื•ื‘ื™ืœื•ืช ืœื›ืš ืฉื”ืžืชื•ืจื’ืžืŸ ืžืฆื™ื’ ืฉื’ื™ืื” ื‘ื–ืžืŸ ื”ื‘ื™ืฆื•ืข, ื•ื”ืŸ ื‘ืขื™ื•ืช ืกืžื ื˜ื™ื•ืช, ืฉื‘ื’ืœืœืŸ ื”ื‘ื™ืฆื•ืข ืื™ื ื• ืžื•ืคืจืข, ืืš ืžืชืจื—ืฉื•ืช ื—ืจื™ื’ื•ืช ื‘ื”ืชื ื”ื’ื•ืช ื”ืกืงืจื™ืคื˜. ื”ืžื ืชื— ื™ื›ื•ืœ ื’ื ืœื–ื”ื•ืช ืฆื•ื•ืืจื™ ื‘ืงื‘ื•ืง, ื‘ืขื™ื•ืช ืœื ื‘ืจื•ืจื•ืช ื•ืžืœื›ื•ื“ื•ืช ืฉืขืœื•ืœื•ืช ืœื”ื•ื‘ื™ืœ ืœื›ืฉืœื™ื ื‘ื ืกื™ื‘ื•ืช ืžืกื•ื™ืžื•ืช.

ื‘ื™ืŸ ืžื—ืœืงื•ืช ื”ืฉื’ื™ืื•ืช ืฉื–ื•ื”ื•, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ ื‘ืขื™ื•ืช ื‘ื‘ืจื™ื—ื” ืฉืœ ืชื•ื•ื™ื ืžื™ื•ื—ื“ื™ื ื•ืžืกื’ืจืชื ื‘ืžืจื›ืื•ืช, ืฉื’ื™ืื•ืช ื‘ื‘ื™ื˜ื•ื™ื™ื ืžื•ืชื ื™ื, ืฉื™ืžื•ืฉ ืœื ื ื›ื•ืŸ ื‘ืคืงื•ื“ื•ืช, ื‘ืขื™ื•ืช ื‘ืขื™ื‘ื•ื“ ืฉืขื•ืช ื•ืชืืจื™ื›ื™ื ื•ืฉื’ื™ืื•ืช ืชื—ื‘ื™ืจ ืื•ืคื™ื™ื ื™ื•ืช ืœืžืชื—ื™ืœื™ื. ืœื“ื•ื’ืžื”, ื”ื™ืขื“ืจ ืจื•ื•ื—ื™ื ื‘ืขืช ื”ืฉื•ื•ืืช "[[ $foo==0 ]]", ื ื•ื›ื—ื•ืชื ืฉืœ ืจื•ื•ื—ื™ื "var = 42" ืื• ืฆื™ื•ืŸ ื”ืกืžืœ $ ื‘ืขืช ื”ืงืฆืืช "$foo=42", ื”ืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื™ื ืœืœื ืžืจื›ืื•ืช "echo $1", ื”ืื™ื ื“ื™ืงืฆื™ื” ืฉืœ ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื ื ื•ืกืคื™ื ื‘-"tr -cd '[a-zA-Z0-9]'",

ื‘ื ื•ืกืฃ, ื”ื•ื ืชื•ืžืš ื‘ืคืœื˜ ืฉืœ ื”ืžืœืฆื•ืช ืœืฉื™ืคื•ืจ ืกื’ื ื•ืŸ ื”ืงื•ื“, ื‘ื™ื˜ื•ืœ ื‘ืขื™ื•ืช ื ื™ื™ื“ื•ืช ื•ื”ื’ื‘ืจืช ื”ืืžื™ื ื•ืช ืฉืœ ืกืงืจื™ืคื˜ื™ื. ืœื“ื•ื’ืžื”, ื‘ืžืงื•ื "ื”ื“ $[1+2]" ื™ื•ืฆืข ืœื”ืฉืชืžืฉ ื‘ืชื—ื‘ื™ืจ "$((..))", ื”ืžื‘ื ื” 'rm -rf "$STEAMROOT/"*' ื™ืกื•ืžืŸ ื›ืœื ื‘ื˜ื•ื— ื•ืžืกื•ื’ืœ ืœืžื—ื•ืง ืืช ืกืคืจื™ื™ืช ื”ืฉื•ืจืฉ ืื ื”ืžืฉืชื ื” ืื™ื ื• ืžืœื $STEAMROOT, ื•ื”ืฉื™ืžื•ืฉ ื‘-"echo {1..10}" ื™ื•ื“ื’ืฉ ื›ืœื ืชื•ืื ืขื ืžืงืฃ ื•-sh.

ื‘ื’ืจืกื” ื”ื—ื“ืฉื”:

  • ื ื•ืกืคื” ืื–ื”ืจื” ืขื‘ื•ืจ ื‘ื™ื˜ื•ื™ื™ื ื›ืžื• 'foo ืžืงื•ืžื™ ืœืงืจื™ืื” ื‘ืœื‘ื“'.
  • ื ื•ืกืคื” ืื–ื”ืจื” ืœื’ื‘ื™ ืคืงื•ื“ื•ืช ืœื ื–ืžื™ื ื•ืช.
  • ื ื•ืกืคื” ืื–ื”ืจื” ืœื’ื‘ื™ ืงื™ืฉื•ืจื™ื ื ื›ื ืกื™ื ืœ-'declare x=1 y=$x'.
  • ื ื•ืกืคื” ืื–ื”ืจื” ืื $? ืžืฉืžืฉ ืœื”ื“ืคืกืช ืงื•ื“ ื”ื”ื—ื–ืจื” ืฉืœ echo, printf, [ ], [[ ]] ื•-test.
  • ื ื•ืกืคื” ื”ืžืœืฆื” ืœื”ืกื™ืจ ((..))inarray[((idx))]=val.
  • ื ื•ืกืคื” ื”ืžืœืฆื” ืœืฉืจืฉื•ืจ ืกื•ื’ืจื™ื™ื ื›ืคื•ืœื™ื ื‘ื”ืงืฉืจื™ื ืืจื™ืชืžื˜ื™ื™ื.
  • ื ื•ืกืคื” ื”ืžืœืฆื” ืœื”ืกื™ืจ ืกื•ื’ืจื™ื™ื ื‘ื‘ื™ื˜ื•ื™ a[(x+1)]=val.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”