V tomto článku napíšeme bash skript, který zkontroluje, zda soubory existují nebo ne.
Syntaxe:
- test [výraz]
- [výraz]
- [[výraz]]
Zde ve výrazu píšeme parametr a název souboru . Podívejme se na některé parametry, které lze ve výrazu použít: –
- – F: Vrací True, pokud soubor existuje jako běžný (běžný) soubor. -d : vrátí True, pokud adresář existuje. -e : Vrací hodnotu True, pokud existuje jakýkoli typ souboru. -c : Vrací hodnotu True, pokud soubor znaků existuje. -r : Vrací hodnotu True, pokud existuje čitelný soubor.
- – v : Vrací True, pokud existuje zapisovatelný soubor . -x : Vrací hodnotu True, pokud existuje spustitelný soubor. -p : Vrací hodnotu True, pokud soubor existuje jako kanál. -S : Vrací hodnotu True, pokud soubor existuje jako soket. -s : vrátí True, pokud soubor existuje a velikost souboru není nulová. -L : Vrací True, pokud soubor symbolického odkazu existuje . -g : Vrací True, pokud soubor existuje a je nastaven příznak hold set group id.. -G : já t vrátí True, pokud soubor existuje a obsahuje stejné ID skupiny, které se zpracovává. -k : Vrací True, pokud soubor existuje a je nastaven příznak sticky bit.
Nyní jsou zde některé další parametry pro srovnání mezi těmito dvěma soubory.
- -ef: Vrací hodnotu True, pokud oba soubory existují a označují stejný soubor.
Příklad:
FirstFile -ef SecondFile>
- -nt: Vrací hodnotu True, pokud je první soubor novější než druhý soubor.
Příklad:
sql výběr více tabulek
FirstFile -nt FileOld>
- -ot: Vrací hodnotu True, pokud je první soubor starší než druhý soubor.
Příklad:
FirstFile -ot SecondFile>
Vezměme si několik příkladů založených na syntaxi:
- [ výraz ]: Nejprve vytvořte soubor s názvem FirstFile.sh a napište do něj následující skript
#!/bin/bash # using [ expression ] syntax and in place # of File.txt you can write your file name if [ -f 'File.txt' ]; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>
Nyní uložte a spusťte soubor pomocí následujícího příkazu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>
Výstup :

Výstup
Poznámka: Protože soubor File.txt je přítomen v systému. Vytisklo se tedy Soubor existuje .
- test [výraz]: Nyní upravte výše uvedený skript v souboru FirstFile.sh následovně
#!/bin/bash # using test expression syntax and in place # of File2.txt you can write your file name if test -f 'File2.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>
Nyní znovu uložte a spusťte soubor pomocí následujícího příkazu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>
Výstup :

Výstup
Poznámka: Protože soubor 2.txt není v systému přítomen. Vytisklo se tedy Soubor neexistuje .
- [[ výraz ]]: Znovu upravte výše uvedený skript v souboru FirstFile.sh následovně
#!/bin/bash # using [[ expression ]] syntax and in place # of File3.txt you can write your file name if test -f 'File3.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>
Nyní znovu uložte a spusťte soubor pomocí následujícího příkazu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>
Výstup :

Výstup
Poznámka: Protože soubor File3.txt je přítomen v systému. Takže to vytisklo File is exist .
java převést int na řetězec
Podívejme se na příklad založený na parametrech:
- Použití parametru -d: Vytvořte soubor s názvem FirstDir.sh a napište do něj následující skript
!/bin/bash if [[ -d 'GFG_dir' ]] ; # Here GFG_dir is directory and in place of GFG_dir you can write your Directory name then echo 'Directory is exist' # If GFG_dir exist then it will be printed else echo 'Directory is not exist' # If GFG_dir is not exist then it will be printed fi>
Nyní uložte a spusťte soubor pomocí následujícího příkazu
np nuly
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>
Výstup :

Výstup
Poznámka: Protože GFG_dir je přítomen v systému. Takže to vytisklo Directory is exist .
Podobně můžete použít -F , -To je , -V , -r , -C ,atd. (podle jejich použití) místo -d pro kontrolu existence různých typů souborů.
Podívejme se na příklad založený na porovnání dvou souborů:
- Použitím -nt parametr
Vytvořte název souboru Comparison_File.sh a napište následující skript
#!/bin/bash # New_file.txt and Old_File.txt are names of two files. if [[ 'New_File.txt' -nt 'Old_File.txt' ]] ; then # This will be printed if Condition is true echo 'New_File.txt is newer than Old_File.txt' else # This will be printed if Condition is False echo 'New_File.txt is not newer than Old_File.txt' fi>
Nyní uložte a spusťte soubor pomocí následujícího příkazu
$ chmod +x ./Comparison_File.sh $ ./Comparison_File.sh>
Výstup :

Výstup
Poznámka: Protože oba soubory jsou v systému přítomny a New_File.txt je novější než Old_File.txt
Podívejme se na příklad Zkontrolujte, zda soubor neexistuje:
Vytvořte soubor s názvem Check_Exist.sh a napište do něj následující skript
#!/bin/bash # using ! before -f parameter to check if # file does not exist if [[ ! -f 'GFG.txt' ]] ; then # This will printed if condition is True echo 'File is not exist' else # This will be printed if condition is False echo 'File is exist' fi>
Nyní uložte a spusťte soubor pomocí následujícího příkazu
$ chmod +x ./Check_Exist.sh $ ./Check_Exist.sh>
Výstup :

Výstup
Poznámka: GFG.txt není v systému přítomen. Takže vytiskne Soubor neexistuje
Podívejme se na příklad bez použití podmínky If-else:
Vytvořte soubor s názvem Geeks_File.sh a napište do něj následující skript
#!/bin/bash # If File exist then first statement will be # printed and if it is not exist then 2nd # statement will be printed. [ -f 'GFG_File.txt' ] && echo 'File is exist' || echo 'File is not exist'>
Nyní uložte a spusťte soubor pomocí následujícího příkazu
mylivericket
$ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>
Výstup :

Výstup
Poznámka: Protože soubor GFG_File.txt je v systému přítomen. Takže to vytisklo File is exist .