Yadda Ake Aiwatar da Yanayin Gyaran Jumla a cikin Rubutun Shell


Mun fara jerin gyara rubutun harsashi ta hanyar bayyana zaɓuɓɓukan gyara daban-daban da yadda ake kunna yanayin gyara rubutun harsashi.

Bayan rubuta rubutun harsashi, ana ba da shawarar cewa a zahiri mu bincika ma'anar rubutu a cikin rubutun kafin gudanar da su, sabanin kallon abin da suke fitarwa don tabbatar da cewa suna aiki daidai.

A cikin wannan ɓangaren jerin, za mu bi ta yadda za a yi amfani da yanayin gyara kuskuren syntax. Ka tuna mun bayyana zaɓuɓɓukan gyara kuskure daban-daban a ɓangaren farko na wannan jerin kuma a nan, za mu yi amfani da su don yin gyara rubutun.

Kafin mu matsa zuwa ainihin abin da wannan jagorar ta fi mayar da hankali, bari mu ɗan bincika yanayin magana. Ana kunna shi ta hanyar zaɓin gyara kuskure -v, wanda ke gaya wa harsashi don nuna duk layi a cikin rubutun yayin karanta su.

Don nuna yadda wannan ke aiki, a ƙasa akwai rubutun samfurin harsashi don sauya hotunan PNG zuwa tsarin JPG.

Buga (ko kwafi da liƙa) a cikin fayil.

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

Sannan ajiye fayil ɗin kuma sanya rubutun aiwatarwa ta amfani da umarnin da ke ƙasa:

$ chmod +x script.sh

Za mu iya kiran rubutun kuma mu nuna duk layin da ke cikinsa yayin da harsashi ke karanta su kamar haka:

$ bash -v script.sh

Komawa kan jigon mu na girmamawa, -n yana kunna yanayin duba ma'amala. Yana ba da umarni ga harsashi don karanta duk umarnin, amma ba ya aiwatar da su, (harsashi) yana nazarin ma'anar da aka yi amfani da shi kawai.

Idan akwai kurakurai a cikin rubutun harsashi, harsashi zai fitar da kurakurai akan tashar, in ba haka ba, ba ya nuna komai.

Ma'anar kalma don kunna aikin duba ma'auni shine kamar haka:

$ bash -n script.sh

Saboda ma'anar rubutun daidai ne, umarnin da ke sama ba zai nuna kowane fitarwa ba. Don haka, bari mu yi ƙoƙarin cire kalmar yi wacce ke rufe madauki don ganin ko ta nuna kuskure:

A ƙasa akwai ingantaccen rubutun harsashi don sauya hotuna png zuwa tsarin jpg wanda ya ƙunshi kwaro.

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

Ajiye fayil ɗin, sannan gudanar da shi yayin aiwatar da binciken syntax a ciki:

$ bash -n script.sh

Daga abin da aka fitar a sama, za mu iya ganin cewa akwai matsalar daidaitawa tare da rubutun mu, don madauki ya rasa kalmar rufe ai keyword. Kuma harsashi ya neme shi har zuwa ƙarshen fayil ɗin kuma da zarar bai same shi ba (an yi), harsashin ya buga kuskuren syntax:

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

Hakanan za mu iya haɗa yanayin verbose da yanayin dubawa tare:

$ bash -vn script.sh

A madadin, za mu iya ba da damar duba ma'amala ta hanyar gyara layin farko na rubutun da ke sama kamar a misali na gaba.

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

Kamar yadda yake a baya, ajiye fayil ɗin kuma gudanar da shi yayin da ake bincika syntax:

$ ./script.sh

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

Bugu da kari, za mu iya yin amfani da tsarin ginanniyar ginin harsashi don ba da damar yin gyara a cikin rubutun da ke sama.

A cikin misalin da ke ƙasa, kawai muna bincika tsarin madauki a cikin rubutun mu.

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

Har yanzu, ajiye fayil ɗin kuma kira rubutun:

$ ./script.sh 

A taƙaice, ya kamata koyaushe mu tabbatar da cewa mun bincika rubutun harsashi don kama duk wani kuskure kafin aiwatar da su.

Don aiko mana da kowace tambaya ko ra'ayi game da wannan jagorar, yi amfani da fom ɗin amsa da ke ƙasa. A kashi na uku na wannan silsilar, za mu matsa zuwa bayani da amfani da yanayin gano harsashi.