ShellCheck 0.9 เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เป€เบ›เบฑเบ™เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบชเบณเบฅเบฑเบšเบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เปเบเบฐ

เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ ShellCheck 0.9 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบชเบฐเบ„เบดเบš shell เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ bash, sh, ksh เปเบฅเบฐ dash. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Haskell เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPLv3. เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบš Vim, Emacs, VSCode, Sublime, Atom, เปเบฅเบฐเบเบญเบšเบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš GCC.

ShellCheck 0.9 เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เป€เบ›เบฑเบ™เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบชเบณเบฅเบฑเบšเบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เปเบเบฐ

เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบฑเบ‡เบชเบญเบ‡ syntax เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบฅเบฐเบซเบฑเบ”, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ™เบฒเบเบžเบฒเบชเบฒเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐเบšเบฑเบ™เบซเบฒ semantic, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบปเบšเบเบงเบ™, เปเบ•เปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเปƒเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ script เป€เบเบตเบ”เบ‚เบทเป‰เบ™. เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบ„เปเบ‚เบงเบ”, เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบ‚เบธเบกเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบžเบฒเบเปƒเบ•เป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ›เบฐเป€เบžเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเบงเบ”เบžเบปเบš, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบžเบดเป€เบชเบ”เปเบฅเบฐเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบงเบปเบ‡เบขเบทเบก, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบงเบฅเบฒเปเบฅเบฐเบงเบฑเบ™เบ—เบต, เปเบฅเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” syntax เบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ‚เบฒเบ”เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบš "[[ $foo==0 ]]", เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบŠเปˆเบญเบ‡ "var = 42" เบซเบผเบทเบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบ $ เป€เบกเบทเปˆเบญเบเปเบฒเบ™เบปเบ” "$foo = 42", เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›. เป‚เบ”เบเบšเปเปˆเบกเบตเบงเบปเบ‡เบขเบทเบก โ€œecho $1โ€, เบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบ‚เบญเบ‡เบงเบปเบ‡เป€เบฅเบฑเบšเบชเบตเปˆเบซเบผเปˆเบฝเบกเบžเบดเป€เบชเบ”เปƒเบ™ "tr -cd '[a-zA-Z0-9]'",

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบฎเบนเบšเปเบšเบšเบฅเบฐเบซเบฑเบ”, เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆ, เปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบชเบฐเบ„เบดเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ โ€œecho $[1+2]โ€ เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบฐเป€เปœเบตเปƒเบซเป‰เปƒเบŠเป‰ syntax โ€œ$(..)โ€, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ 'rm -rf โ€œ$STEAMROOT/โ€*' เบˆเบฐเบ–เบทเบเปเบฒเบเบงเปˆเบฒเบšเปเปˆเบ›เบญเบ”เป„เบž. เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบถเบš root directory เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบšเปเปˆเป€เบ•เบฑเบกเป„เบ› $STEAMROOT, เปเบฅเบฐเบเบฒเบ™เปƒเบŠเป‰ "echo {1..10}" เบˆเบฐเบ–เบทเบเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบงเปˆเบฒเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบเบฑเบš dash เปเบฅเบฐ sh.

เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบŠเบฑเปˆเบ™ 'local readonly foo'.
  • เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบณเบชเบฑเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰.
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบš backlinks เบเบฑเบš 'เบ›เบฐเบเบฒเบ” x=1 y=$x'.
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ–เป‰เบฒ $? เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบžเบดเบกเบฅเบฐเบซเบฑเบ”เบเบฑเบšเบ„เบทเบ™เบ‚เบญเบ‡ echo, printf, [ ], [[ ]] เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.
  • เป€เบžเบตเปˆเบกเบ„เบณเปเบ™เบฐเบ™เบณเป€เบžเบทเปˆเบญเป€เบญเบปเบฒ ((..))inarray[((idx))]=val.
  • เป€เบžเบตเปˆเบกเบ„เบณเปเบ™เบฐเบ™เบณเบชเบณเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบงเบปเบ‡เป€เบฅเบฑเบšเบ„เบนเปˆเปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เป€เบฅเบเป€เบฅเบ.
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบงเบปเบ‡เป€เบฅเบฑเบšเบญเบญเบเปƒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ a[(x+1)]=val.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™