Bii o ṣe le Ṣe Ipo n ṣatunṣe aṣiṣe Sintasi ni Awọn iwe afọwọkọ Shell


A bẹrẹ jara n ṣatunṣe aṣiṣe iwe ikarahun nipa ṣiṣe alaye awọn aṣayan n ṣatunṣe oriṣiriṣi ati bii o ṣe le mu awọn ipo n ṣatunṣe aṣiṣe iwe afọwọkọ ṣiṣẹ.

Lẹhin kikọ awọn iwe afọwọkọ ikarahun rẹ, o ni iṣeduro pe ki a ṣayẹwo iṣeṣiro ni awọn iwe afọwọkọ ṣaaju ṣiṣe wọn, ni idakeji si wiwo iṣelọpọ wọn lati jẹrisi pe wọn n ṣiṣẹ ni deede.

Ninu apakan yii, a yoo lọ nipasẹ bii a ṣe le lo ipo n ṣatunṣe aṣiṣe sintasi. Ranti pe a ṣalaye awọn aṣayan n ṣatunṣe oriṣiriṣi ni apakan akọkọ ti jara yii ati nibi, a yoo lo wọn lati ṣe n ṣatunṣe aṣiṣe iwe afọwọkọ.

Ṣaaju ki a to lọ si idojukọ akọkọ ti itọsọna yii, jẹ ki a ṣawari ṣoki ipo ọrọ-ọrọ. O ti muu ṣiṣẹ nipasẹ aṣayan aṣayan-ṣatunṣe -v , eyiti o sọ fun ikarahun lati han gbogbo awọn ila ni iwe afọwọkọ lakoko ti wọn ka wọn.

Lati ṣe afihan bi eyi ṣe n ṣiṣẹ, ni isalẹ jẹ iwe afọwọkọ ikarahun apẹẹrẹ kan lati ṣe iyipada awọn aworan PNG si ọna kika JPG.

Tẹ (tabi daakọ ati lẹẹ mọ) ninu faili kan.

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

Lẹhinna fi faili pamọ ki o jẹ ki iwe afọwọkọ ṣiṣẹ ni lilo pipaṣẹ ni isalẹ:

$ chmod +x script.sh

A le bẹbẹ iwe afọwọkọ ki a ṣe afihan gbogbo awọn ila inu rẹ bi wọn ṣe ka wọn nipasẹ ikarahun bii bẹẹ:

$ bash -v script.sh

Pada si akọle wa ti tẹnumọ, Awọn -n mu ipo iṣayẹwo sintasi ṣiṣẹ. O ṣe ikarahun ikarahun naa lati ka gbogbo awọn aṣẹ ni ipilẹ, sibẹsibẹ ko ṣiṣẹ wọn, o (ikarahun) nikan ṣe ayẹwo sintasi ti a lo.

Ni ọran ti awọn aṣiṣe wa ninu iwe afọwọkọ ikarahun rẹ, ikarahun naa yoo mu awọn aṣiṣe jade lori ebute, bibẹkọ, ko ṣe afihan nkankan.

Itọkasi fun ṣiṣẹ iṣayẹwo sintasi jẹ bi atẹle:

$ bash -n script.sh

Nitori pe itumọ ti o wa ninu iwe afọwọkọ naa tọ, aṣẹ ti o wa loke kii yoo ṣe afihan eyikeyi iṣẹjade. Nitorinaa, jẹ ki a gbiyanju lati yọ ọrọ ti a ti ṣe ti o pa fun lupu ki o rii boya o fihan aṣiṣe kan:

Ni isalẹ ni iwe afọwọkọ ikarahun ti a tunṣe si ipele iyipada awọn aworan png si ọna jpg ti o ni kokoro kan ninu.

#!/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

Fipamọ faili naa, lẹhinna ṣiṣe lakoko ṣiṣe yiyewo sintasi ninu rẹ:

$ bash -n script.sh

Lati iṣẹjade ti o wa loke, a le rii pe iṣoro sintasi kan wa pẹlu iwe afọwọkọ wa, ọna fun lupu ti nsọnu ipari ṣe ọrọ koko. Ati pe ikarahun naa wa fun opin faili naa ati ni kete ti ko rii (ṣe), ikarahun naa tẹ aṣiṣe sintasi kan:

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

A tun le darapọ ipo verbose ati ipo ṣayẹwo sintasi papọ:

$ bash -vn script.sh

Ni omiiran, a le mu ṣayẹwo sintasi nipa ṣiṣatunṣe laini akọkọ ti iwe afọwọkọ loke bi ninu apẹẹrẹ ti nbọ.

#!/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

Gẹgẹ bi ṣaju, ṣafipamọ faili naa ki o ṣiṣẹ lakoko ṣiṣe yiyewo sintasi:

$ ./script.sh

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

Ni afikun, a le lo aṣẹ ikarahun ti a ṣeto sinu lati mu ipo n ṣatunṣe aṣiṣe ṣiṣẹ ni akosile loke.

Ninu apẹẹrẹ ni isalẹ, a n ṣayẹwo nikan sintasi ti fun fun lupu ninu iwe afọwọkọ wa.

#!/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

Lẹẹkan si, fipamọ faili naa ki o pe iwe afọwọkọ naa:

$ ./script.sh 

Ni akojọpọ, o yẹ ki a rii daju nigbagbogbo pe a ṣaakiri ṣayẹwo awọn iwe afọwọkọ ikarahun wa lati mu eyikeyi aṣiṣe ṣaaju ṣiṣe wọn.

Lati firanṣẹ eyikeyi ibeere tabi esi nipa itọsọna yii, lo fọọmu idahun ni isalẹ. Ni apakan kẹta ti jara yii, a yoo gbe si alaye ati lilo ipo n ṣatunṣe wiwa ikarahun.