ShellCheck - ເຄື່ອງມືທີ່ສະແດງໃຫ້ເຫັນ ຄຳ ເຕືອນແລະ ຄຳ ແນະ ນຳ ສຳ ລັບ Shell Scripts


ShellCheck ແມ່ນເຄື່ອງມືການວິເຄາະທີ່ສະຖຽນລະພາບເຊິ່ງສະແດງໃຫ້ເຫັນ ຄຳ ເຕືອນແລະ ຄຳ ແນະ ນຳ ທີ່ກ່ຽວຂ້ອງກັບລະຫັດທີ່ບໍ່ດີໃນສະຄິບແກະ bash/sh. ມັນສາມາດຖືກ ນຳ ໃຊ້ໃນຫລາຍໆດ້ານ: ຈາກເວບໂດຍການຕິດສະຄິບແກະຂອງທ່ານໃນບັນນາທິການທາງອິນເຕີເນັດ (Ace - ບັນນາທິການລະຫັດແບບຢືນຢັນທີ່ຂຽນເປັນພາສາ JavaScript) ໃນ https://www.shellcheck.net (ມັນຖືກປັບແຕ່ງໃຫ້ສະ ເໝີ ກັບ git ລ້າສຸດ ຄໍາຫມັ້ນສັນຍາ, ແລະແມ່ນວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະໃຫ້ ShellCheck ໄປ) ສໍາລັບການຕອບຮັບທັນທີ.

ອີກທາງເລືອກ ໜຶ່ງ, ທ່ານສາມາດຕິດຕັ້ງມັນຢູ່ໃນເຄື່ອງຂອງທ່ານແລະແລ່ນຈາກປາຍ, ລວມມັນກັບບັນນາທິການຕົວ ໜັງ ສືຂອງທ່ານເຊັ່ນດຽວກັນກັບຊຸດສ້າງຫຼືທົດສອບຂອງທ່ານ.

ມີສາມຢ່າງທີ່ ShellCheck ເຮັດເປັນຫລັກ:

  • ມັນຊີ້ໃຫ້ເຫັນແລະອະທິບາຍບັນຫາ syntax ຂອງຜູ້ເລີ່ມຕົ້ນແບບ ທຳ ມະດາທີ່ເຮັດໃຫ້ຫອຍແຄງສົ່ງຂໍ້ຄວາມຜິດພາດຈາກ cryptic.
  • ມັນຊີ້ໃຫ້ເຫັນແລະອະທິບາຍບັນຫາແບບ semantic ໃນລະດັບປົກກະຕິທີ່ເຮັດໃຫ້ຫອຍມີພຶດຕິ ກຳ ແປກແລະຕ້ານກັບຄວາມຕັ້ງໃຈ.
  • ມັນຍັງຊີ້ໃຫ້ເຫັນບັນດາເຫດການທີ່ຫຍໍ້ທໍ້, ແຈແລະກໍລະນີທີ່ອາດຈະເຮັດໃຫ້ຂໍ້ສະ ເໜີ ຂອງຜູ້ໃຊ້ຂັ້ນສູງລົ້ມເຫຼວພາຍໃຕ້ສະຖານະການໃນອະນາຄົດ.

ໃນບົດຂຽນນີ້, ພວກເຮົາຈະສະແດງວິທີການຕິດຕັ້ງແລະ ນຳ ໃຊ້ ShellCheck ໃນຫລາຍໆດ້ານເພື່ອຊອກຫາຂໍ້ບົກພ່ອງຫລືລະຫັດທີ່ບໍ່ດີໃນສະຄິບແກະຂອງທ່ານໃນ Linux.

ວິທີການຕິດຕັ້ງແລະໃຊ້ ShellCheck ໃນ Linux

ShellCheck ສາມາດຕິດຕັ້ງຢູ່ໃນທ້ອງຖິ່ນໄດ້ງ່າຍໂດຍຜ່ານຜູ້ຈັດການຊຸດຂອງທ່ານດັ່ງທີ່ສະແດງໄວ້.

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

ເມື່ອ ShellCheck ຕິດຕັ້ງແລ້ວ, ລອງເບິ່ງວິທີການໃຊ້ ShellCheck ໃນຫລາຍວິທີທີ່ພວກເຮົາໄດ້ກ່າວມາກ່ອນ.

ເຂົ້າໄປທີ່ https://www.shellcheck.net ແລະວາງສະຄິບຂອງທ່ານລົງໃນບັນນາທິການ Ace ທີ່ທ່ານໃຫ້, ທ່ານຈະເຫັນຜົນຜະລິດຢູ່ທາງລຸ່ມຂອງບັນນາທິການດັ່ງທີ່ສະແດງຢູ່ໃນ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້.

ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ສະຄິບຫອຍທົດສອບປະກອບດ້ວຍສາຍຕໍ່ໄປນີ້:

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

ຈາກ ໜ້າ ຈໍຂ້າງເທິງ, ຕົວແປສອງຕົວ ທຳ ອິດ E_NOTROOT ແລະ E_MINARGS ໄດ້ຖືກປະກາດແຕ່ບໍ່ໄດ້ໃຊ້, ShellCheck ລາຍງານເຫຼົ່ານີ້ວ່າເປັນ "ຂໍ້ຜິດພາດທີ່ແນະ ນຳ":

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

ຫຼັງຈາກນັ້ນອັນທີສອງ, ຊື່ທີ່ບໍ່ຖືກຕ້ອງ (ໃນ ຄຳ ຖະແຫຼງ echo $E_NONROOT) ຖືກໃຊ້ເພື່ອແອັກໂກ້ E_NOTROOT ຕົວປ່ຽນແປງ, ນັ້ນແມ່ນເຫດຜົນທີ່ວ່າ ShellCheck ສະແດງຂໍ້ຜິດພາດ:

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

ອີກເທື່ອ ໜຶ່ງ ເມື່ອທ່ານເບິ່ງ ຄຳ ສັ່ງຂອງແອັກໂກ້, ຕົວແປຕ່າງໆບໍ່ໄດ້ຖືກອ້າງອີງສອງເທື່ອ (ຊ່ວຍປ້ອງກັນບໍ່ໃຫ້ເກີດການປັ່ນປ່ວນແລະການແຍກ ຄຳ ສັບ), ດັ່ງນັ້ນ Shell Check ຈຶ່ງສະແດງ ຄຳ ເຕືອນ:

SC2086: Double quote to prevent globbing and word splitting.

ນອກນັ້ນທ່ານຍັງສາມາດ ດຳ ເນີນການ ShellCheck ຈາກເສັ້ນ ຄຳ ສັ່ງ, ພວກເຮົາຈະໃຊ້ສະຄິບແກະທີ່ຢູ່ຂ້າງເທິງດັ່ງຕໍ່ໄປນີ້:

$ shellcheck test.sh

ທ່ານຍັງສາມາດເບິ່ງ ຄຳ ແນະ ນຳ ແລະ ຄຳ ເຕືອນຂອງ ShellCheck ໂດຍກົງໃນຫຼາຍໆບັນນາທິການ, ນີ້ອາດຈະເປັນວິທີການທີ່ມີປະສິດທິພາບຫຼາຍຂື້ນໃນການ ນຳ ໃຊ້ ShellCheck, ເມື່ອທ່ານເກັບແຟ້ມເອກະສານ, ມັນຈະສະແດງໃຫ້ທ່ານຮູ້ຂໍ້ຜິດພາດຕ່າງໆໃນລະຫັດ.

ໃນ Vim, ໃຫ້ໃຊ້ ALE ຫຼື Syntastic (ພວກເຮົາຈະໃຊ້ສິ່ງນີ້):

ເລີ່ມຕົ້ນໂດຍການຕິດຕັ້ງ Pathogen ເພື່ອໃຫ້ງ່າຍຕໍ່ການຕິດຕັ້ງ synthesis. ດໍາເນີນການຄໍາສັ່ງຂ້າງລຸ່ມນີ້ເພື່ອໃຫ້ໄດ້ເອກະສານ pathogen.vim ແລະໄດເລກະທໍລີທີ່ມັນຕ້ອງການ:

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

ຈາກນັ້ນຕື່ມສິ່ງນີ້ໃສ່ໃນແຟ້ມ ~/.vimrc ຂອງທ່ານ:

execute pathogen#infect()

ເມື່ອທ່ານໄດ້ຕິດຕັ້ງເຊື້ອພະຍາດ, ແລະຕອນນີ້ທ່ານສາມາດໃສ່ synthesis ເຂົ້າໄປໃນ ~/.vim/bundle ດັ່ງຕໍ່ໄປນີ້:

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

ຕໍ່ໄປ, ປິດ vim ແລະເລີ່ມຕົ້ນມັນ ສຳ ຮອງເພື່ອໂຫລດມັນ, ຫຼັງຈາກນັ້ນພິມ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

:Helptags

ຖ້າທຸກຢ່າງດີ, ທ່ານຄວນມີ ShellCheck ປະສົມປະສານກັບ Vim, ພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວ່າມັນໃຊ້ໄດ້ແນວໃດໂດຍໃຊ້ສະຄິບດຽວກັນຂ້າງເທິງ.

ໃນກໍລະນີທີ່ທ່ານມີຂໍ້ຜິດພາດຫລັງຈາກປະຕິບັດຕາມຂັ້ນຕອນຂ້າງເທິງ, ຫຼັງຈາກນັ້ນທ່ານອາດຈະບໍ່ຕິດຕັ້ງ Pathogen ຢ່າງຖືກຕ້ອງ. ເຮັດຂັ້ນຕອນ ໃໝ່ ແຕ່ສິ່ງນີ້ຮັບປະກັນວ່າທ່ານໄດ້ເຮັດດັ່ງຕໍ່ໄປນີ້:

  • ສ້າງທັງໄດເລກະທໍລີ ~/.vim/autoload ແລະ ~/.vim/bundle.
  • ເພີ່ມເສັ້ນປະຕິບັດການ # ຕິດເຊື້ອ() ໃສ່ແຟ້ມ ~/.vimrc ຂອງທ່ານ.
  • ໄດ້ມີ clone git ຂອງການສະແດງພາຍໃນ ~/.vim/ມັດ.
  • ໃຊ້ສິດອະນຸຍາດທີ່ ເໝາະ ສົມເພື່ອເຂົ້າເຖິງບັນດາໄດເລກະທໍລີຂ້າງເທິງທັງ ໝົດ.

ທ່ານຍັງສາມາດໃຊ້ບັນນາທິການຄົນອື່ນກວດເບິ່ງລະຫັດທີ່ບໍ່ດີໃນ shell shell ເຊັ່ນ:

  • ໃນ Emacs, ໃຊ້ Flycheck.
  • ໃນ Sublime, ຈ້າງ SublimeLinter.
  • ໃນ Atom, ໃຊ້ Linter.
  • ໃນບັນນາທິການດັດແກ້ອື່ນໆສ່ວນໃຫຍ່ແມ່ນໃຊ້ GCC ທີ່ເຂົ້າກັນໄດ້ຜິດພາດ.

ໝາຍ ເຫດ: ໃຊ້ຄັງຂອງລະຫັດທີ່ບໍ່ດີເພື່ອ ດຳ ເນີນການ ShellChecking ຫຼາຍ.

ບ່ອນເກັບມ້ຽນຂອງ ShellCheck Github: https://github.com/koalaman/shellcheck

ນັ້ນແມ່ນມັນ! ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ສະແດງວິທີການຕິດຕັ້ງແລະໃຊ້ ShellCheck ເພື່ອຊອກຫາຂໍ້ບົກພ່ອງຫລືລະຫັດທີ່ບໍ່ດີໃນສະຄິບແກະຂອງທ່ານໃນ Linux. ແບ່ງປັນຄວາມຄິດຂອງທ່ານກັບພວກເຮົາຜ່ານພາກສະແດງຄວາມເຫັນຂ້າງລຸ່ມນີ້.

ທ່ານຮູ້ຈັກເຄື່ອງມືອື່ນໆທີ່ຄ້າຍຄືກັນນີ້ບໍ? ຖ້າແມ່ນ, ຫຼັງຈາກນັ້ນແບ່ງປັນຂໍ້ມູນກ່ຽວກັບພວກເຂົາໃນ ຄຳ ເຫັນເຊັ່ນກັນ.