Kuidas kontrollida, kas Bash Shelli skriptis on fail või kataloog

Kontrollige, kas Bashi skriptist fail või kataloog on olemas

Bashi kasutatakse Linuxis regulaarselt täidetavate käskude automatiseerimiseks. Käske, mis on mõeldud toimingute tegemiseks failidega/kataloogidega, kasutatakse üsna sageli ja tavaliselt peame enne sellise käsu täitmist kontrollima, kas konkreetne fail või kataloog on olemas. Vaatame, kuidas seda kontrolli teha.

Süntaks ja kasutamine

Failid

Et kontrollida, kas fail on olemas, kasutage järgmist süntaksit:

[-f]

Väljend [-f] tagastab 0, st edu, kui on olemas ja kui seda pole, tagastab see nullist erineva oleku. Tavaliselt kasutatakse seda tingimusena kui avaldus.

kui [ -f ] siis fi

Tagastatud väärtuse eitamiseks, lihtsalt ette -f eitusoperaatoriga (!).

kui [ ! -f ] siis fi

Sel juhul on tingimus täidetud, kui fail ei eksisteeri, kuna tagastatud nullist erinev olek (väär) tühistatakse ja loetakse 0-ks (tõene).

Pange tähele, et kui kontrollitavat faili praeguses kataloogis ei ole ja see on mõnes teises kataloogis, tuleks ainult failinime asemel mainida faili täielikku teed.

Kataloogid

Kataloogide kontrollimisel kasutatakse sarnast süntaksit, mida kasutatakse failide kontrollimisel.

[-d]

Sarnaselt failide lausega tagastab see kataloog 0, st edu on olemas ja nullist erinev, st tõrke olek tagastatakse, kui seda pole olemas. Seda kasutatakse tavaliselt ka an kui avalduse tingimus.

kui [ -d ] siis fi

Tagastatud oleku tühistamiseks täitke -d eitusoperaatoriga (!).

kui [ ! -d ] siis fi

Tingimus rahuldatakse (olek 0) sel juhul, kui kataloogi ei eksisteeri, ja nurjub (olek pole null), kui kataloog on olemas.

Nagu varem mainitud failide puhul, kui kontrollitav kataloog on mõnes teises asukohas, mitte praeguses kataloogis, tuleb sisestada kogu kataloogi tee, mitte ainult kataloogi nimi.

💡 Sulgude süntaks ( [...] ) kasutatakse siin tegelikult Linuxi käsku katsetada. Valikud -f ja -d on selle käsu omadused. Lisateabe saamiseks vaadake testi juhendi lehte ( mehe test ).

Kontrollige Bashi skriptist

Ülaltoodud näidetes oleme kasutanud süntaksi otse terminalis. Kest alati, kui see kohtab tsüklit või tingimuslauset (kui meie puhul), jätkab see viipa ja laseb kasutajal sisestada ploki jätkamise.

Sama süntaksit saab kasutada ka Bashi skripti sees.

The #!/bin/bash alguses määrab tõlgi, mida faili käivitamisel kasutatakse. Kuigi Bash on tänapäeval kõige sagedamini kasutatav kest, eelistavad mõned kasutajad selliseid kestasid nagu zsh, mis tuleks selle faili alguses määrata bashi asemel.

Käivitusõiguste andmiseks selle faili jaoks käivitage:

chmod +x test.sh

Lõpuks faili käivitamiseks, jookse:

./test.sh