Monesti kirjoittaessasi Shell-komentosarjoja saatat joutua tilanteeseen, jossa sinun on suoritettava toiminto sen perusteella, onko tiedosto olemassa vai ei. .
Bashissa voit testikomennolla tarkistaa, onko tiedosto olemassa, ja määrittää tiedoston tyypin.
Testikomennolla on jokin seuraavista syntaksimuodoista:
Jos haluat, että komentosarjasi on kannettava, sinun tulisi mieluummin käyttää vanhaa testiä ; then echo "$FILE exists."fi
Jos haluat suorittaa toisen toiminnon sen perusteella, onko tiedosto olemassa vai ei käytä if / then-rakennetta:
Voit käyttää testikomentoa myös ilman if-käskyä. && -operaattorin jälkeen oleva komento suoritetaan vain, jos testikomennon poistumistila on tosi,
Jos haluat Suorita komentosarja sen jälkeen, kun && -operaattori yksinkertaisesti liittää komennot kiharissa sulkeissa erotettuna ; tai &&:
Päinvastoin lausekkeen && kanssa || -operaattori suoritetaan vain, jos testikomennon poistumistila on false.
Tarkista, onko hakemisto olemassa #
Operaattoreiden -d avulla voit testata, onko tiedosto hakemisto vai ei.
Esimerkiksi tarkistaaksesi, onko /etc/docker -hakemisto olemassa:
Voit käyttää myös kaksoissulkeita ; then echo "$FILE does not exist."fi
Sama kuin yllä:
Tarkista, onko olemassa useita tiedostoja #
Monimutkaisten sisäkkäisten if / else-rakenteiden käyttämisen sijaan voit käyttää -a (tai && kanssa ; then echo "Both files exist."fi
Vastaavat variantit ilman IF-käskyä:
tiedostotestioperaattorit #
Testikomento sisältää seuraavat FILE-operaattorit, joiden avulla voit testata tietyntyyppisiä tiedostoja:
-
-bFILE– Tosi, jos TIEDOSTO on olemassa ja se on erityinen lohkotiedosto. -
-cFILE– Tosi jos TIEDOSTO on olemassa ja se on erikoismerkkitiedosto. -
-dFILE– Tosi, jos TIEDOSTO on olemassa ja se on hakemisto. -
-eFILE– Tosi, jos FILE on olemassa ja se on tiedosto, tyypistä (solmu, hakemisto, socket jne.) riippumatta. -
-fFILE– Tosi, jos TIEDOSTO on olemassa ja se on tavallinen tiedosto (ei hakemisto tai laite). -
-GFILE– Tosi, jos TIEDOSTO on olemassa ja sillä on sama ryhmä kuin komennon suorittavalla käyttäjällä. -
-hFILE– Tosi, jos TIEDOSTO on olemassa ja se on symbolinen linkki. -
-gFILE– Tosi, jos TIEDOSTO on olemassa ja set-group-id (sgid) -lippu on asetettu. -
-kFILE– Tosi, jos TIEDOSTO on olemassa ja siihen on asetettu tahmea bitti. -
-L– Tosi, jos TIEDOSTO on olemassa ja se on symbolinen linkki. -
-OFILE– Tosi, jos FILE on olemassa ja sen omistaa komentoa suorittava käyttäjä. -
-pFILE– Tosi, jos TIEDOSTO on olemassa ja se on putki. -
-rFILE– Tosi, jos TIEDOSTO on olemassa ja luettavissa. -
-SFILE– Tosi, jos TIEDOSTO on olemassa ja se on liitäntä. -
-sFILE– Tosi, jos TIEDOSTO on olemassa ja sen koko on nolla. -
-uFILE– Tosi, jos TIEDOSTO on olemassa, ja set-user-id (suid) -lippu on asetettu. -
-wFILE– Tosi, jos TIEDOSTO on olemassa ja kirjoitettavissa. -
-xFILE– Tosi, jos TIEDOSTO on olemassa ja se on exe leikattu.
Päätelmä #
Tässä oppaassa olemme osoittaneet, kuinka voit tarkistaa, onko Bashissa tiedosto tai hakemisto.