ວິທີການປະຕິບັດ Syntax ການກວດສອບຮູບແບບການແກ້ໄຂໃນ Shell Scripts


ພວກເຮົາໄດ້ເລີ່ມຕົ້ນຊຸດ shell script debugging ໂດຍການອະທິບາຍຕົວເລືອກ debugging ທີ່ແຕກຕ່າງກັນແລະວິທີການເປີດໃຊ້ຮູບແບບ shell debugging.

ຫລັງຈາກຂຽນສະຄິບແກະຂອງທ່ານ, ພວກເຮົາແນະ ນຳ ໃຫ້ພວກເຮົາປະຕິບັດການກວດສອບ syntax ໃນສະຄິບກ່ອນທີ່ຈະ ດຳ ເນີນການ, ແທນທີ່ຈະເບິ່ງຜົນຜະລິດຂອງມັນເພື່ອຢືນຢັນວ່າພວກເຂົາເຮັດວຽກຖືກຕ້ອງ.

ໃນສ່ວນຂອງຊຸດນີ້, ພວກເຮົາຈະຜ່ານວິທີການ ນຳ ໃຊ້ ໂໝດ debugging ກວດສອບ syntax. ຈື່ໄວ້ວ່າພວກເຮົາໄດ້ອະທິບາຍຕົວເລືອກ debugging ທີ່ແຕກຕ່າງກັນໃນພາກ ທຳ ອິດຂອງຊຸດນີ້ແລະໃນທີ່ນີ້, ພວກເຮົາຈະໃຊ້ພວກມັນເພື່ອ ດຳ ເນີນການແກ້ໄຂ script.

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

ເພື່ອສະແດງວິທີການເຮັດວຽກນີ້, ຕົວຢ່າງລຸ່ມນີ້ແມ່ນຕົວ ໜັງ ສືແກະສະຫຼັກເພື່ອແປງຮູບ PNG ເປັນຮູບແບບ JPG.

ພິມ (ຫລື ສຳ ເນົາແລະວາງ) ໃສ່ໃນແຟ້ມ.

#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo "image $image converted to ${image%.png}.jpg"
done
exit 0

ຫຼັງຈາກນັ້ນບັນທຶກເອກະສານແລະເຮັດໃຫ້ສະຄິບ ດຳ ເນີນການໄດ້ໂດຍໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

$ chmod +x script.sh

ພວກເຮົາສາມາດເອີ້ນຕົວອັກສອນແລະສະແດງທຸກສາຍໃນມັນດັ່ງທີ່ພວກມັນຖືກອ່ານໂດຍແກະທີ່ຄ້າຍຄືດັ່ງນີ້:

$ bash -v script.sh

ກັບມາທີ່ຫົວຂໍ້ຂອງການເນັ້ນ ໜັກ ຂອງພວກເຮົາ, The -n ເປີດໃຊ້ຮູບແບບການກວດສອບ syntax. ມັນແນະ ນຳ ໃຫ້ຫອຍສາມາດອ່ານ ຄຳ ສັ່ງທັງ ໝົດ ໂດຍພື້ນຖານ, ເຖິງຢ່າງໃດກໍ່ຕາມມັນຈະບໍ່ປະຕິບັດໃຫ້ມັນ, ມັນ (ແກະ) ພຽງແຕ່ກວດເບິ່ງ syntax ທີ່ໃຊ້.

ໃນກໍລະນີທີ່ມີຂໍ້ຜິດພາດໃນສະຄິບແກະຂອງທ່ານ, ຫອຍຈະສົ່ງຂໍ້ຜິດພາດຢູ່ປາຍ, ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນຈະບໍ່ສະແດງຫຍັງເລີຍ.

syntax ສຳ ລັບການກວດສອບ syntax ທີ່ໃຊ້ໄດ້ແມ່ນມີດັ່ງນີ້:

$ bash -n script.sh

ເນື່ອງຈາກວ່າ syntax ໃນຄິບແມ່ນຖືກຕ້ອງ, ຄຳ ສັ່ງຂ້າງເທິງຈະບໍ່ສະແດງຜົນໃດໆ. ເພາະສະນັ້ນ, ໃຫ້ພວກເຮົາພະຍາຍາມເອົາ ຄຳ ທີ່ຖືກເຮັດແລ້ວ ທີ່ປິດ ສຳ ລັບ loop ແລະເບິ່ງວ່າມັນສະແດງຂໍ້ຜິດພາດ:

ຂ້າງລຸ່ມນີ້ແມ່ນສະຄິບຫອຍທີ່ຖືກປັບປ່ຽນເພື່ອແບັກອັບຮູບພາບ png ເປັນຮູບແບບ jpg ທີ່ມີຂໍ້ບົກພ່ອງ.

#!/bin/bash
#script with a bug
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo "image $image converted to ${image%.png}.jpg"

exit 0

ບັນທຶກເອກະສານ, ຫຼັງຈາກນັ້ນ ດຳ ເນີນການໃນຂະນະທີ່ ດຳ ເນີນການກວດສອບ syntax ໃນມັນ:

$ bash -n script.sh

ຈາກຜົນໄດ້ຮັບຂ້າງເທິງ, ພວກເຮົາສາມາດເຫັນໄດ້ວ່າມີບັນຫາກ່ຽວກັບ syntax ກັບອັກສອນຂອງພວກເຮົາ, ສຳ ລັບ loop ແມ່ນຂາດ ຄຳ ສັ່ງປິດ ເຮັດ ແລະຫອຍໄດ້ຊອກຫາມັນຈົນເຖິງເອກະສານສິ້ນສຸດແລະເມື່ອມັນບໍ່ພົບ (ເຮັດແລ້ວ), ຫອຍນາງພິມຂໍ້ຜິດພາດຂອງ syntax:

script.sh: line 11: syntax error: unexpected end of file

ພວກເຮົາສາມາດປະສົມປະສານ ໂໝດ verbose ແລະ ໂໝດ ກວດສອບ syntax ພ້ອມກັນ:

$ bash -vn script.sh

ອີກທາງເລືອກ ໜຶ່ງ, ພວກເຮົາສາມາດເປີດໃຊ້ການກວດສອບ syntax ໂດຍການດັດແປງແຖວ ທຳ ອິດຂອງອັກສອນຂ້າງເທິງດັ່ງໃນຕົວຢ່າງຕໍ່ໄປ.

#!/bin/bash -n
#altering the first line of a script to enable syntax checking

#convert
for image in *.png; do
    convert  "$image"  "${image%.png}.jpg"
    echo "image $image converted to ${image%.png}.jpg"

exit 0

ຄືກັນກັບກ່ອນ, ປະຢັດເອກະສານແລະແລ່ນມັນໃນຂະນະທີ່ ດຳ ເນີນການກວດສອບ syntax:

$ ./script.sh

script.sh: line 12: syntax error: unexpected end of file

ນອກ ເໜືອ ຈາກນີ້, ພວກເຮົາສາມາດຈ້າງ ຄຳ ສັ່ງທີ່ມີການຕິດຕັ້ງທີ່ໃຊ້ແກະເພື່ອເຮັດໃຫ້ຮູບແບບການ ກຳ ຈັດ debugging ໃນຄິບຂ້າງເທິງ.

ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ພວກເຮົາພຽງແຕ່ກວດເບິ່ງ syntax ຂອງ for for loop ໃນສະຄິບຂອງພວກເຮົາ.

#!/bin/bash
#using set shell built-in command to enable debugging
#convert

#enable debugging
set -n
for image in *.png; do
    convert  "$image"  "${image%.png}.jpg"
    echo "image $image converted to ${image%.png}.jpg"

#disable debugging
set +n
exit 0

ອີກເທື່ອ ໜຶ່ງ, ບັນທຶກເອກະສານແລະຂໍຂຽນສະຄິບ:

$ ./script.sh 

ສະຫລຸບລວມແລ້ວ, ພວກເຮົາຄວນຮັບປະກັນສະ ເໝີ ວ່າພວກເຮົາກວດເບິ່ງຕົວ ໜັງ ສືແກະຂອງພວກເຮົາຢ່າງເປັນການເຄື່ອນໄຫວເພື່ອເກັບ ກຳ ຂໍ້ຜິດພາດໃດໆກ່ອນທີ່ຈະ ດຳ ເນີນການ.

ເພື່ອສົ່ງ ຄຳ ຖາມຫລື ຄຳ ຕິຊົມໃດໆກ່ຽວກັບ ຄຳ ແນະ ນຳ ນີ້ໃຫ້ພວກເຮົາ, ໃຊ້ແບບຟອມຕອບຮັບຂ້າງລຸ່ມນີ້. ໃນພາກທີສາມຂອງຊຸດນີ້, ພວກເຮົາຈະຍ້າຍໄປອະທິບາຍແລະ ນຳ ໃຊ້ຮູບແບບການ ກຳ ຈັດ debugging ແກະ.