Как да проверите дали файл или директория съществува в Bash Shell скрипт

Проверка дали съществува файл или директория от Bash скрипт

Bash се използва за автоматизиране на редовно изпълнявани команди в Linux. Командите, които са предназначени за операции с файлове/директории, се използват доста често и обикновено, преди да изпълним такава команда, трябва да проверим дали конкретният файл или директория съществува. Нека видим как да извършим тази проверка.

Синтаксис и употреба

Файлове

За да проверите дали файл съществува, използвайте следния синтаксис:

[ -f ]

Изразът [ -f ] връща 0, т.е. успех, ако съществува и ако не съществува, връща ненулев статус. Обикновено това се използва като условие в ако изявление.

ако [ -f ] тогава fi

За да отричате върнатата стойност, просто предхождайте -f с оператор за отрицание (!).

ако [ ! -f ] след това fi

В този случай условието ще удовлетвори, ако файлът не съществува, тъй като върнатият ненулев статус (false) ще бъде отхвърлен и ще се счита за 0 (true).

Имайте предвид, че ако файлът за проверка не съществува в текущата директория и съществува в друга директория, пълният път на файла трябва да бъде споменат вместо само името на файла.

Директории

Подобен синтаксис като използван за проверка на файлове се използва за проверка на директории.

[ -д  ]

Подобно на оператора за файлове, този оператор връща 0, т.е. успех, ако директорията съществува и не е нула, т.е. се връща състоянието на грешка, ако не съществува. Това също често се използва в ако условие на изявлението.

ако [ -d ] тогава fi

За да отмените върнатия статус, предхождайте с оператор за отрицание (!).

ако [ ! -d ] след това fi

Условието ще удовлетвори (състояние 0) в този случай, ако директорията не съществува, и ще се провали (състояние не е нула), ако директорията съществува.

Както бе споменато по-горе за файловете, ако директорията, която трябва да се проверява, съществува на друго място, а не в текущата директория, трябва да се въведе целия път на директорията вместо само името на директорията.

💡 Синтаксисът на скоби ( [...] ) използваната тук всъщност е команда на Linux, наречена тест. Опциите -f и са характеристиките на тази команда. За повече информация вижте страницата с ръководството на теста ( мъж тест ).

Проверете от Bash скрипт

В горните примери сме използвали синтаксиса директно на терминала. Обвивката винаги, когато срещне цикъл или условно изявление (ако в нашия случай), той продължава подканата и позволява на потребителя да влезе в блока за продължаване.

Същите синтаксиси могат да се използват от вътрешността на Bash скрипт.

В #!/bin/bash в началото определя интерпретатора, който да се използва, когато файлът се изпълнява. Въпреки че Bash е най-често използваната обвивка в днешно време, някои потребители предпочитат черупки като zsh, който трябва да бъде посочен на мястото на bash в началото на този файл.

За да дадете разрешения за изпълнение за този файл изпълнете:

chmod +x test.sh

накрая, за да изпълните файла, стартирайте:

./test.sh
Категория: Linux