Hogyan ellenőrizhető, hogy létezik-e fájl vagy könyvtár a Bash Shell szkriptben

Annak ellenőrzése, hogy létezik-e fájl vagy könyvtár egy Bash-szkriptből

A Bash a rendszeresen végrehajtott parancsok automatizálására szolgál Linuxban. A fájlokkal/könyvtárakkal végzett műveletekre szánt parancsok meglehetősen gyakran használatosak, és általában mielőtt végrehajtanánk egy ilyen parancsot, ellenőriznünk kell, hogy az adott fájl vagy könyvtár létezik-e. Nézzük meg, hogyan kell végrehajtani ezt az ellenőrzést.

Szintaxis és használat

Fájlok

Annak ellenőrzésére, hogy létezik-e fájl, használja a következő szintaxist:

[-f]

A kifejezés [-f] 0-t ad vissza, azaz sikeres, ha létezik, és ha nem létezik, akkor nem nulla állapotot ad vissza. Általában ezt feltételként használják a ha nyilatkozat.

ha [ -f ] akkor fi

A visszaadott érték tagadása, egyszerűen előzze meg a -f tagadó operátorral (!).

ha [ ! -f ] majd fi

Ebben az esetben a feltétel teljesül, ha a fájl nem létezik, mivel a visszaadott nem nulla státusz (hamis) érvénytelenítésre kerül, és 0-nak (igaznak) tekintendő.

Vegye figyelembe, hogy ha az ellenőrizni kívánt fájl nem létezik az aktuális könyvtárban, és létezik egy másik könyvtárban, akkor csak a fájlnév helyett a fájl teljes elérési útját kell feltüntetni.

Könyvtárak

A fájlok ellenőrzéséhez használt szintaxishoz hasonló a könyvtárak ellenőrzése is.

[-d]

Hasonlóan a fájlok utasításához, ez az utasítás 0-t ad vissza, azaz sikert, ha a könyvtár létezik, és nem nulla, azaz hibaállapotot ad vissza, ha nem létezik. Ezt is gyakran használják egy ha nyilatkozat feltétele.

ha [ -d ] akkor fi

A visszaadott állapot tagadásához írja be a jelet -d tagadó operátorral (!).

ha [ ! -d ] majd fi

A feltétel teljesül (0 állapot) ebben az esetben, ha a könyvtár nem létezik, és meghiúsul (státusz nem nulla), ha a könyvtár létezik.

Ahogy a fájlok esetében már említettük, ha az ellenőrizni kívánt könyvtár egy másik helyen létezik, és nem az aktuális könyvtár, akkor a teljes könyvtár elérési utat kell megadni, nem csak a könyvtár nevét.

💡 A zárójel szintaxisa ( [...] ) itt használt valójában egy Linux parancs teszt. A lehetőségek -f és -d ezek a parancs jellemzői. További információkért lásd a teszt kézikönyv oldalát ( férfi teszt ).

Ellenőrizze Bash Scriptből

A fenti példákban a szintaxisokat közvetlenül a terminálon használtuk. A shell, amikor ciklussal vagy feltételes utasítással találkozik (ha esetünkben), folytatja a promptot, és lehetővé teszi a felhasználó számára a blokk folytatása parancsot.

Ugyanezek a szintaxisok használhatók egy Bash-szkripten belülről is.

A #!/bin/bash az elején megadja a fájl végrehajtásakor használandó értelmezőt. Bár manapság a Bash a leggyakrabban használt shell, néhány felhasználó előnyben részesíti az ehhez hasonló shelleket zsh, amelyet a fájl elején a bash helyett kell megadni.

Végrehajtási engedélyek megadása ehhez a fájlhoz futtassa:

chmod +x test.sh

Végül, a fájl végrehajtásához, fuss:

./test.sh