Kā pārbaudīt, vai Bash Shell skriptā ir fails vai direktorijs

Pārbaude, vai no Bash skripta pastāv fails vai direktorijs

Bash tiek izmantots, lai automatizētu regulāri izpildītas komandas operētājsistēmā Linux. Komandas, kas paredzētas operācijām ar failiem/direktorijiem, tiek izmantotas diezgan bieži, un parasti pirms šādas komandas izpildīšanas ir jāpārbauda, ​​vai konkrētais fails vai direktorijs eksistē. Apskatīsim, kā veikt šo pārbaudi.

Sintakse un lietojums

Faili

Lai pārbaudītu, vai fails pastāv, izmantojiet šādu sintaksi:

[-f]

Izteiciens [-f] atgriež 0, t.i., veiksme, ja pastāv, un, ja tas neeksistē, tas atgriež statusu, kas nav nulle. Parasti tas tiek izmantots kā nosacījums ja paziņojums, apgalvojums.

ja [ -f ], tad fi

Lai noliegtu atgriezto vērtību, vienkārši pirms -f ar nolieguma operatoru (!).

ja [ ! -f ], tad fi

Šajā gadījumā nosacījums tiks izpildīts, ja fails tiks izpildīts neeksistē, jo atgrieztais statuss, kas nav nulle (nepatiess), tiks noliegts un uzskatīts par 0 (patiess).

Ņemiet vērā: ja pārbaudāmais fails neeksistē pašreizējā direktorijā un pastāv kādā citā direktorijā, ir jānorāda pilns faila ceļš, nevis tikai faila nosaukums.

Katalogi

Katalogu pārbaudei tiek izmantota līdzīga sintakse kā failu pārbaudei.

[-d]

Līdzīgi kā priekšraksts failiem, šis priekšraksts atgriež 0, t.i., panākumus, ja direktorijs pastāv, un, ja tā neeksistē, tiek atgriezts atteices statuss, kas nav nulle. To parasti izmanto arī ja paziņojuma nosacījums.

ja [ -d ] tad fi

Lai atceltu atgriezto statusu, ievadiet pirms -d ar nolieguma operatoru (!).

ja [ ! -d ] pēc tam fi

Nosacījums tiks izpildīts (statuss 0) šajā gadījumā, ja direktorija nepastāv, un neizdosies (statuss nav nulle), ja direktorijs pastāv.

Kā minēts iepriekš attiecībā uz failiem, ja pārbaudāmais direktorijs atrodas citā vietā, nevis pašreizējā direktorijā, ir jāievada viss direktorija ceļš, nevis tikai direktorija nosaukums.

💡 Iekavas sintakse ( [...] ) šeit tiek izmantota Linux komanda pārbaude. Iespējas -f un -d ir šīs komandas iezīmes. Lai iegūtu papildinformāciju, skatiet testa rokasgrāmatas lapu ( cilvēka tests ).

Pārbaudiet no Bash skripta

Iepriekš minētajos piemēros sintakses esam izmantojuši tieši terminālī. Apvalks ikreiz, kad tas saskaras ar cilpu vai nosacījuma paziņojumu (ja mūsu gadījumā), tas turpina uzvedni un ļauj lietotājam ievadīt bloka turpināšanu.

Tās pašas sintakses var izmantot no Bash skripta iekšpuses.

The #!/bin/bash sākumā norāda tulku, kas tiks izmantots, kad fails tiek izpildīts. Lai gan Bash ir mūsdienās visbiežāk izmantotais apvalks, daži lietotāji dod priekšroku tādiem apvalkiem kā zsh, kas jānorāda bash vietā šī faila sākumā.

Lai piešķirtu izpildes atļaujas šim failam palaidiet:

chmod +x test.sh

Visbeidzot, lai izpildītu failu, palaist:

./test.sh