Kuinka tarkistaa, onko Bash Shell -komentosarjassa tiedosto tai hakemisto

Tarkista, onko Bash-komentosarjasta tiedosto tai hakemisto olemassa

Bashia käytetään säännöllisesti suoritettavien komentojen automatisointiin Linuxissa. Tiedostojen/hakemistojen operaatioihin tarkoitettuja komentoja käytetään melko usein, ja yleensä ennen tällaisen komennon suorittamista meidän on tarkistettava, onko kyseistä tiedostoa tai hakemistoa olemassa. Katsotaanpa, kuinka tämä tarkistus suoritetaan.

Syntaksi ja käyttö

Tiedostot

Tarkistaaksesi, onko tiedosto olemassa, käytä seuraavaa syntaksia:

[-f]

Ilmaisu [-f] palauttaa 0, eli onnistuu jos on olemassa, ja jos sitä ei ole, se palauttaa tilan, joka ei ole nolla. Tyypillisesti tätä käytetään ehtona jos lausunto.

jos [ -f ] niin fi

Palautetun arvon kumoamiseksi, yksinkertaisesti edeltää -f negatiivisella operaattorilla (!).

jos [! -f ] sitten fi

Tässä tapauksessa ehto täyttyy, jos tiedosto ei ole olemassa, koska palautettu nollasta poikkeava tila (false) kumotaan ja sitä pidetään arvona 0 (tosi).

Huomaa, että jos tarkistettavaa tiedostoa ei ole nykyisessä hakemistossa ja se on jossain muussa hakemistossa, tulee mainita tiedoston koko polku pelkän tiedostonimen sijaan.

Hakemistot

Samanlaista syntaksia kuin tiedostojen tarkistamiseen käytetään hakemistojen tarkistamiseen.

[-d]

Samoin kuin käsky tiedostoille, tämä lauseke palauttaa 0, eli onnistumisen, jos hakemisto on olemassa, ja nollasta poikkeava tila palautetaan, jos sitä ei ole olemassa. Tätä käytetään yleisesti myös jos lausunnon ehto.

jos [ -d ] niin fi

Jos haluat mitätöidä palautetun tilan, kirjoita ennen -d negatiivisella operaattorilla (!).

jos [! -d ] sitten fi

Ehto täyttyy (tila 0) tässä tapauksessa, jos hakemistoa ei ole olemassa, ja epäonnistuu (tila ei ole nolla), jos hakemisto on olemassa.

Kuten aiemmin tiedostojen kohdalla mainittiin, jos tarkistettava hakemisto on toisessa paikassa eikä nykyisessä hakemistossa, on syötettävä koko hakemistopolku pelkän hakemiston nimen sijaan.

💡 Hakasulkeen syntaksi ( [...] ) käytetään tässä itse asiassa Linux-komentoa testata. Vaihtoehdot -f ja -d ovat tämän komennon ominaisuuksia. Katso lisätietoja testin manuaalisivulta ( mies testi ).

Tarkista Bash-skriptistä

Yllä olevissa esimerkeissä olemme käyttäneet syntakseja suoraan päätteessä. Shell aina kun se kohtaa silmukan tai ehdollisen lauseen (jos meidän tapauksessamme), se jatkaa kehotetta ja antaa käyttäjän jatkaa lohkoa.

Samoja syntakseja voidaan käyttää Bash-skriptin sisältä.

The #!/bin/bash alussa määrittää tulkin, jota käytetään, kun tiedosto suoritetaan. Vaikka Bash on yleisimmin käytetty kuori nykyään, jotkut käyttäjät pitävät enemmän sellaisista kuorista kuin zsh, joka tulee määrittää bashin tilalle tämän tiedoston alussa.

Suoritusoikeuksien myöntäminen suorita tälle tiedostolle:

chmod +x test.sh

Lopuksi, suorittaaksesi tiedoston, juosta:

./test.sh