Večino časa se lahko zgodi, da bomo morda morali izvesti dejanje, ki bo preverilo, ali datoteka obstaja ali ne.
V Bashu lahko uporabimo 'test ukaz', da preverimo, ali datoteka obstaja, in določimo vrsto datoteke.
Spodaj so sintakse testnega ukaza in uporabimo lahko katerega koli od teh ukazov:
test expression [ expression ] [[ expression ]]
Uporabiti moramo ukaz z enim oklepajem '[', da bo naš skript prenosljiv za vse lupine POSIX. Nadgrajena različica testnega ukaza vsebuje dvojne oklepaje '[[', ki je podprt v večini sodobnih sistemov, ki uporabljajo Bash, Zsh in Ksh kot privzeto lupino.
Preverite, ali datoteka obstaja
Med preverjanjem, ali datoteka obstaja, sta najpogosteje uporabljena operatorja datoteke -e in -f. Možnost '-e' se uporablja za preverjanje, ali datoteka obstaja ne glede na vrsto, medtem ko se možnost '-f' uporablja za vrnitev prave vrednosti le, če je datoteka običajna datoteka (ne imenik ali naprava).
Najpogostejša možnost za preverjanje, ali datoteka obstaja ali ne, je uporaba testnega ukaza s pogojnim stavkom if.
Spodaj so primeri za preverjanje, ali datoteka 'read_file.txt' obstaja:
1. metoda
#!/bin/bash File=read_file.txt if test -f '$File'; then echo '$File exist ' fi
Metoda 2
#!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist ' fi
3. metoda
#!/bin/bash File=read_file.txt if [[ -f '$File' ]]; then echo '$File exist ' fi
Izhod
Izhod za vse tri metode bo kot spodaj, ker imamo v imeniku datoteko (read_file.txt):
abstraktni razred java
read_file.txt exist
Če želimo izvesti dejanje, ki bo zagotovilo rezultat glede na to, ali datoteka obstaja ali ne, lahko uporabimo konstrukcijo if/then na naslednji način:
Primer
#!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist' else echo '$File does not exist' fi
Izhod
read_file.txt exist
Ukaz test lahko uporabimo tudi brez stavka if. Uporabimo lahko katero koli od naslednjih metod:
1. metoda
#!/bin/bash File=read_file.txt test -f read_file.txt && echo '$File exist'
Metoda 2
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist'
3. metoda
#!/bin/bash File=read_file.txt [[ -f read_file.txt ]] && echo '$File exist'
Izhod
Izhod za vse tri metode bo kot spodaj, ker imamo v imeniku datoteko (read_file.txt):
read_file.txt exist
Če je za operatorjem && treba izvesti več ukazov, jih zapišite v zavite oklepaje, ločene s podpičjem(;) ali IN (&&), tj.:
Primer
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && { echo '$File exist'; echo 'Task Completed'; }
Za razliko od &&, stavek za || se izvede le, če je izhodni status testnega ukaza 'false'.
hashmap v Javi
Primer
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' || echo '$File does not exist'
Izhod
read_file.txt exist
To so pogosto uporabljene metode v Bashu za preverjanje, ali datoteka obstaja ali ne.
Preverite, ali imenik obstaja
Operator '-d' nam omogoča preizkus, ali je datoteka imenik ali ne.
Sledijo metode za preverjanje, ali imenik 'Javatpoint' obstaja:
1. metoda
#!/bin/bash File=Javatpoint if [ -d '$File' ]; then echo '$File is a directory' fi
Metoda 2
#!/bin/bash File=Javatpoint [ -d '$File' ] && echo '$File is a directory'
Opomba:Namesto enojnega oklepaja '[' lahko uporabimo tudi dvojne oklepaje '[['.
Izhod
Izhod za obe zgornji metodi bo naslednji, saj imamo imenik (imenovan Javatpoint), ki je prisoten na navedeni lokaciji:
Javatpoint is a directory
Preverite, ČE datoteka ne obstaja
Testni izraz je mogoče zanikati z uporabo klicaja (! -logični operator NOT). Oglejte si naslednji primer:
Primer
#!/bin/bash File=missing_read_file.txt if [ ! -f '$File' ]; then echo '$File does not exist' fi
Zgornji skript je lahko zapisan tudi kot spodaj:
#!/bin/bash File=missing_read_file.txt [ ! -f '$File' ] && echo '$File unavailable'
Izhod
missing_read_file.txt unavailable
Operatorji za testiranje datotek
Testni ukazi vključujejo naslednje datotečne operaterje, ki nam omogočajo testiranje določenih vrst datotek:
-b Vrne datoteke | 'True', če DATOTEKA obstaja kot posebna blokovna datoteka. |
-c Vrne datoteke | 'True', če DATOTEKA obstaja kot datoteka s posebnimi znaki. |
-d Vrne datoteke | 'True', če DATOTEKA obstaja kot imenik. |
-e Vrne datoteke | 'True', če DATOTEKA obstaja kot datoteka, ne glede na vrsto (vozlišče, imenik, vtičnica itd.). |
-f Vrne datoteke | 'True', če DATOTEKA obstaja kot navadna datoteka (ne imenik ali naprava). |
-G Vrne datoteke | 'True', če DATOTEKA obstaja in vsebuje isto skupino kot uporabnik, ki izvaja ukaz. |
-h Vrne datoteke | 'True', če DATOTEKA obstaja kot simbolna povezava. |
-g Vrne datoteke | 'True', če DATOTEKA obstaja in vsebuje nastavljeno zastavico set-group-id (sgid). |
-k Vrne datoteke | 'True', če DATOTEKA obstaja in vsebuje nastavljeno lepljivo bitno zastavico. |
-L Vrne datoteke | 'True', če DATOTEKA obstaja kot simbolna povezava. |
-O Vrne datoteke | 'True', če DATOTEKA obstaja in je v lasti uporabnika, ki izvaja ukaz. |
-p Vrne datoteke | »True«, če DATOTEKA obstaja kot cev. |
-r Vrne datoteke | 'True', če DATOTEKA obstaja kot berljiva datoteka. |
-S Vrne datoteke | 'True', če DATOTEKA obstaja kot vtičnica. |
-s Vrne datoteke | 'True', če DATOTEKA obstaja in ima različno velikost. |
-u Vrne datoteke | 'True', če DATOTEKA obstaja in je nastavljena zastavica set-user-id (suid). |
-w Vrne datoteke | 'True', če DATOTEKA obstaja kot zapisljiva datoteka. |
-x Vrne datoteke | 'True', če DATOTEKA obstaja kot izvršljiva datoteka. |