Interpretaator ja skripti käivitamine

Skript on kindla laiendiga (.sh, .py, .rb jne) tekstifail, millel on eriline esimene rida, mida võõrsõnaga nimetame ka shebang. Tegemist on interpretaatori määramise reaga, mis toob välja skripti olemuse - käske hakatakse täitma rida realt. See on erinevus võrreldes kompileeritud lähtekoodiga, kus lähtekood (programmeerija poolt kirjutatud käsud vastavas programmeerimiskeeles) on kompileerimise käigus viidud kahendkoodi kujule (binaarkuju).

Käsureal failitüübi tuvastamine (toimib sõltumata faililaiendist):

file failinimi.laiend

# näiteks
file server.py 
server.py: Python script, ASCII text executable

Skripti puhul on tekstifailiga kuhu paneme sõltuvalt skriptimiskeelest kirja samad käsud, mida käsureale kuid iga käsk uuelt realt või siis kombineeritakse operaatoritega kokku. Kuigi Linuxis jt UNIXilaadsetes süsteemides ei ole sageli failitüüp oluline siis parema haldamise ja äratundmise nimel tasub siiski skriptidele laiendeid kirjutada.

Mõned shebangi näited:

Vastavalt interpretaatorile toimub ka käivitamine, näiteks

sh skript.sh
bash skript.sh

Mis on set -euo pipefail?

Skripti alguses peale shebangi saab olla rida

set -euo pipefail

muudab Bash‑skripti käitumist, et parandada vigade avastamist ja vältida ootamatuid efek­te:

  1. e (errexit)

    Skript lõpetab koheselt, kui mõni käsk tagastab mitte‑nulli (st tekib viga).

    See tagab, et ükski oluline käsk või alamprotsess jääb “vaikselt” ebaõnnestunuks, mistõttu viga võib hiljem ilmneda täiesti teises kohas. (Stack Overflow)

  2. u (nounset)

    Kohtleb kõik määratlemata (unset) muutujate viited veana.

    Kui skriptis kasutatakse muutuja nime, millele pole väärtust omistatud, siis skript kohe lõppeb, vältides näiteks kirjavigade või valede vaikeväärtuste probleeme. (Shkodenko Web Development)

  3. o pipefail

    Tavapäraselt tagastab Bash “torupiin” (pipeline) staatuseks viimase käsu välju­mistüübi. pipefail‑i abil muutub see nii, et staatuseks võetakse esimese ebaõnnestunu käsu välju­mitüüpe (või 0, kui kõik õnnestusid).

    See võimaldab tuvastada torupiinide seest vigu ka muudes kui viimasena jooksnud käskudes. (LinuxSimply)