ShellCheck - Ngwa na-egosi ịdọ aka ná ntị na aro maka scripts Shell


ShellCheck bụ ngwa nyocha kwụ ọtọ nke na-egosi ịdọ aka na ntị na aro gbasara koodu ọjọọ na script bash/sh shei. Enwere ike iji ya n'ụzọ dị iche iche: site na webụ site na ịpịnye ederede shei gị na onye na-edezi ntanetị (Ace - onye na-edezi koodu nke edere na Javascript) na https://www.shellcheck.net (a na-emekọrịta ya mgbe niile na git kacha ọhụrụ). mee, na ọ bụ ụzọ kachasị mfe iji nye ShellCheck ịga) maka nzaghachi ozugbo.

N'aka nke ọzọ, ịnwere ike ịwụnye ya na igwe gị wee mee ya site na njedebe, jikọta ya na nchịkọta ederede gị yana n'ime ụlọ ị na-ewu ma ọ bụ ule.

Enwere ihe atọ ShellCheck na-eme nke ọma:

  • Ọ na-arụtụ aka ma na-akọwa ụdị okwu syntax nke onye mbido na-eme ka shei nye ozi njehie nzuzo.
  • Ọ na-arụtụ aka ma na-akọwa nsogbu semantic larịị nke etiti na-eme ka shea na-akpa àgwà dị iche iche na nke na-adịghị mma.
  • Ọ na-egosipụtakwa nhụsianya dị aghụghọ, ikpe nkuku na ọnyà ndị nwere ike ime ka edemede ọrụ onye ọrụ dị elu daa n'okpuru ọnọdụ n'ọdịnihu.

N'isiokwu a, anyị ga-egosi otu esi etinye ShellCheck na ụzọ dị iche iche iji chọta ahụhụ ma ọ bụ koodu ọjọọ na scripts shei gị na Linux.

Otu esi etinye ma jiri ShellCheck na Linux

Enwere ike itinye ShellCheck ngwa ngwa na mpaghara site na njikwa ngwugwu gị dịka egosiri.

# apt-get install shellcheck
# yum -y install epel-release
# yum install ShellCheck
# dnf install ShellCheck

Ozugbo ShellCheck arụnyere, ka anyị leba anya ka esi eji ShellCheck n'ụzọ dị iche iche anyị kwurula na mbụ.

Gaa na https://www.shellcheck.net na mado edemede gị na nchịkọta akụkọ Ace nyere, ị ga-elele mmepụta na ala nke nchịkọta akụkọ dị ka egosiri na nseta ihuenyo dị n'okpuru.

N'ọmụmaatụ na-esote, script ule shei nwere ahịrị ndị a:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;

Site na nseta ihuenyo dị n'elu, ekwupụtala mgbanwe abụọ mbụ E_NOTROOT na E_MINARGS mana ejibeghị ya, ShellCheck na-akọ ndị a dị ka mmehie na-atụ aro:

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Nke abuo, aha na-ezighi ezi (na nkwupụta echo $E_NONROOT) ka ejiri wee kwughachi mgbanwe E_NOTROOT, ya mere ShellCheck gosipụtara njehie ahụ:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Ọzọ mgbe ị lere anya n'iwu nkwughachi ahụ, e kwupụtaghị mgbanwe ndị ahụ ugboro abụọ (na-enyere aka igbochi ịgbasa globbing na nkewa okwu), yabụ Shell Check na-egosi ịdọ aka ná ntị:

SC2086: Double quote to prevent globbing and word splitting.

Ị nwekwara ike ịgba ShellCheck site na ahịrị iwu, anyị ga-eji otu edemede shei dị n'elu dị ka ndị a:

$ shellcheck test.sh

Ịnwekwara ike ịlele ntụnye ShellCheck na ịdọ aka ná ntị ozugbo n'ụdị ndị editọ dị iche iche, nke a nwere ike ịbụ ụzọ dị mma nke iji ShellCheck, ozugbo ịchekwaa faịlụ, ọ na-egosi gị mperi ọ bụla na koodu.

Na Vim, jiri ALE ma ọ bụ Syntastic (anyị ga-eji nke a):

Malite site na ịwụnye Pathogen ka ọ dị mfe ịwụnye syntastic. Gbaa iwu ndị dị n'okpuru iji nweta faịlụ pathogen.vim na akwụkwọ ndekọ aha ọ chọrọ:

# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Mgbe ahụ tinye nke a na faịlụ ~/.vimrc gị:

execute pathogen#infect()

Ozugbo ị wụnye pathogen, ma ị nwere ike tinye syntastic n'ime ~/.vim/bundle dị ka ndị a:

# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Na-esote, mechie vim wee malite ya azụ ka ibugharịa ya, wee pịnye iwu n'okpuru:

:Helptags

Ọ bụrụ na ihe niile na-aga nke ọma, ị ga-etinye ShellCheck na Vim, nseta ihuenyo na-egosi otu o si arụ ọrụ site na iji otu edemede dị n'elu.

Ọ bụrụ na ịnweta njehie mgbe ịgbaso usoro ndị a dị n'elu, ị nwere ike ịwụnyeghị Pathogen nke ọma. Megharịa usoro ndị a mana nke a hụ na i mere ihe ndị a:

  • mepụtara ma ~/.vim/autoload na ~/.vim/bundle directories.
  • gbakwunyere ahịrị pathogen#infect() na faịlụ ~/.vimrc gị.
  • Emere git clone nke syntastic n'ime ~/.vim/bundle.
  • Jiri ikike kwesịrị ekwesị iji nweta akwụkwọ ndekọ aha niile dị n'elu.

Ị nwekwara ike iji ndị editọ ndị ọzọ lelee koodu ọjọọ na script shei dị ka:

  • Na Emacs, jiri Flycheck.
  • Na Sublime, were SublimeLinter were.
  • Na Atom, jiri Linter.
  • N'ọtụtụ ndezi ndị ọzọ, jiri ndakọrịta njehie GCC.

Mara: Jiri gallery nke koodu ọjọọ mee ọtụtụ ShellChecking.

Ebe nchekwa ShellCheck Github: https://github.com/koalaman/shellcheck

Ọ bụ ya! N'ime edemede a, anyị gosiri otu esi etinye ma jiri ShellCheck chọta ahụhụ ma ọ bụ koodu ọjọọ na scripts shei gị na Linux. Gwa anyị echiche gị site na ngalaba nkọwa n'okpuru.

Ị maara ngwá ọrụ ndị ọzọ yiri ya n'ebe ahụ? Ọ bụrụ ee, kesaa ozi gbasara ha na nkọwa ndị ahụ.