Giunsa Pag-enable ang Shell Script Debugging Mode sa Linux


Ang usa ka script usa lamang ka lista sa mga sugo nga gitipigan sa usa ka file. Imbis nga magpadagan sa usa ka han-ay sa mga sugo pinaagi sa pag-type niini sa tagsa-tagsa sa tanang panahon sa terminal, ang usa ka sistema nga user mahimong magtipig sa tanan niini (mga sugo) sa usa ka file ug balik-balik nga magtawag sa file aron ipatuman pag-usab ang mga sugo sa makadaghang higayon.

Samtang nagkat-on sa scripting o sa sayong mga yugto sa pagsulat sa mga script, kasagaran magsugod kami pinaagi sa pagsulat sa gagmay o mugbo nga mga script nga adunay pipila ka linya sa mga mando. Ug kasagaran namong gi-debug ang ingon nga mga script pinaagi sa pagbuhat sa wala’y labaw pa sa pagtan-aw sa ilang mga output ug pagsiguro nga kini molihok sama sa among gusto.

Bisan pa, samtang nagsugod kami sa pagsulat sa taas kaayo ug abante nga mga script nga adunay libu-libo nga linya sa mga mando, pananglitan ang mga script nga nagbag-o sa mga setting sa sistema, nagpahigayon mga kritikal nga pag-backup sa mga network ug daghan pa, makaamgo kami nga ang pagtan-aw lamang sa output sa usa ka script dili. igo aron makit-an ang mga bug sa sulod sa usa ka script.

Busa, niining shell script debugging sa Linux series, atong tun-an unsaon pag-enable ang shell script debugging, mobalhin aron ipatin-aw ang lain-laing shell script debugging modes ug unsaon kini paggamit sa sunod nga serye.

Giunsa Pagsugod ang Usa ka Script

Ang usa ka script gipalahi gikan sa ubang mga file pinaagi sa una nga linya niini, nga adunay #! (She-bang – naghubit sa tipo sa file) ug usa ka ngalan sa agianan (path to interpreter) nga nagpahibalo sa sistema nga ang file mao ang usa ka koleksyon sa mga sugo nga hubaron sa piho nga programa (interpreter).

Sa ubos mao ang mga pananglitan sa \unang linya sa lain-laing matang sa mga script:

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Mubo nga sulat: Ang unang linya o #! mahimong ibilin kung ang usa ka script adunay sulod lamang sa usa ka set sa standard system commands, nga walay bisan unsang internal shell nga mga direktiba.

Giunsa Pagpatuman ang usa ka Shell Script sa Linux

Ang naandan nga syntax alang sa paggamit sa usa ka shell script mao ang:

$ script_name  argument1 ... argumentN

Ang laing posible nga porma mao ang tin-aw nga pagtino sa kabhang nga magpatuman sa script sama sa ubos:

$ shell script_name argument1 ... argumentN  

Pananglitan:

$ /bin/bash script_name argument1 ... argumentN     [For bash scripting]
$ /bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
$ /bin/sh script_name argument1 ... argumentN       [For sh scripting]

Alang sa mga script nga walay #! isip unang linya ug adunay sulod lamang nga mga sugo sa sistema sama sa ubos:

#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Himoa lang kini nga ma-executable ug padagana kini sama sa mosunod:

$ chmod +x  script_name
$ ./script_name 

Mga Pamaagi sa Pag-enable sa Shell Script Debugging Mode

Sa ubos mao ang panguna nga mga kapilian sa pag-debug sa script sa shell:

  1. -v (mubo sa verbose) – nagsulti sa kabhang sa pagpakita sa tanang linya sa usa ka script samtang sila gibasa, kini nagpalihok sa verbose mode.
  2. -n (mubo sa noexec o walay ecxecution) – nagmando sa kabhang sa pagbasa sa tanang mga sugo, apan dili kini ipatuman. Kini nga mga opsyon nagpalihok sa syntax checking mode.
  3. -x (mubo sa xtrace o execution trace) – nagsulti sa kabhang sa pagpakita sa tanang mga sugo ug sa ilang mga argumento sa terminal samtang kini gipatuman. Kini nga opsyon makapahimo sa shell tracing mode.

Ang unang mekanismo mao ang pag-usab sa unang linya sa usa ka shell script sama sa ubos, kini makahimo sa pag-debug sa tibuok script.

#!/bin/sh option(s)

Sa porma sa ibabaw, ang opsyon mahimong usa o kombinasyon sa mga opsyon sa pag-debug sa ibabaw.

Ang ikaduha mao ang paggamit sa kabhang nga adunay mga kapilian sa pag-debug sama sa mosunod, kini nga pamaagi mag-on usab sa pag-debug sa tibuok script.

$ shell option(s) script_name argument1 ... argumentN

Pananglitan:

$ /bin/bash option(s) script_name argument1 ... argumentN   

Ang ikatulo nga pamaagi mao ang paggamit sa set built-in nga command aron ma-debug ang gihatag nga seksyon sa usa ka script sa shell sama sa usa ka function. Kini nga mekanismo importante, tungod kay kini nagtugot kanato sa pag-activate sa debugging sa bisan unsa nga bahin sa usa ka shell script.

Mahimo natong i-on ang debugging mode gamit ang set command sa porma sa ubos, diin ang opsyon mao ang bisan unsa sa mga opsyon sa pag-debug.

$ set option 

Aron mahimo ang debugging mode, gamita ang:

$ set -option

Aron ma-disable ang debugging mode, gamita ang:

$ set +option

Dugang pa, kung gipalihok namo ang daghang mga mode sa pag-debug sa lainlaing mga bahin sa script sa shell, mahimo namon nga ma-disable ang tanan sa usa ka higayon sama niini:

$ set -

Mao kana sa karon nga adunay pagpagana sa shell script debugging mode. Sama sa atong nakita, mahimo natong i-debug ang tibuok script sa shell o usa ka partikular nga seksyon sa usa ka script.

Sa sunod nga duha ka yugto sa kini nga serye, atong hisgotan kung giunsa paggamit ang mga kapilian sa pag-debug sa script sa shell aron ipasabut ang verbose, pagsusi sa syntax ug pagsubay sa mga mode sa pag-debug sa shell nga adunay mga pananglitan.

Importante, ayaw kalimti ang pagpangutana bahin sa kini nga giya o tingali paghatag kanamo og feedback pinaagi sa seksyon sa komento sa ubos. Hangtud niana, magpabilin nga konektado sa Tecmint.