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