Проверка дали съществува файл или директория от 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