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