Перевірка, чи існує файл або каталог із сценарію Bash
Bash використовується для автоматизації регулярно виконуваних команд у Linux. Команди, призначені для операцій з файлами/каталогами, використовуються досить часто, і зазвичай, перш ніж виконати таку команду, нам потрібно перевірити, чи існує конкретний файл або каталог. Давайте подивимося, як виконати цю перевірку.
Синтаксис і використання
Файли
Щоб перевірити, чи існує файл, використовуйте такий синтаксис:
[ -f ]
Вираз [ -f ]
повертає 0, тобто успіх, якщо існує, а якщо не існує, повертає ненульовий статус. Як правило, це використовується як умова в
якщо
заяву.
якщо [ -f ], то fi
Щоб заперечувати повернуте значення, просто передувати -f
з оператором заперечення (!
).
якщо [ ! -f ] потім fi
У цьому випадку умова буде задовольняти, якщо файл не існує, оскільки повернутий ненульовий статус (false) буде скасовано й вважатися 0 (істина).
Зауважте, що якщо файл, який потрібно перевірити, не існує в поточному каталозі, а існує в якомусь іншому каталозі, потрібно вказати повний шлях до файлу, а не лише ім’я файлу.
Довідники
Синтаксис, що використовується для перевірки файлів, використовується для перевірки каталогів.
[ -d ]
Подібно до оператора для файлів, цей оператор повертає 0, тобто успіх, якщо каталог існує, і відмінний від нуля, тобто повертається статус відмови, якщо він не існує. Це також зазвичай використовується в
якщо
умова заяви.
якщо [ -d ], то fi
Щоб скасувати повернутий статус, передуйте -d
з оператором заперечення (!
).
якщо [ ! -d ] потім fi
У цьому випадку умова задовольнить (статус 0), якщо каталог не існує, і зазнає невдачі (статус відмінний від нуля), якщо каталог існує.
Як згадувалося раніше для файлів, якщо каталог, який потрібно перевірити, існує в іншому місці, а не в поточному каталозі, потрібно ввести весь шлях до каталогу, а не лише ім’я каталогу.
💡 Синтаксис дужок ( [...]
), що використовується тут, насправді називається командою Linux випробування
. Варіанти -f
і -d
особливості цієї команди. Для отримання додаткової інформації дивіться сторінку посібника з тестування ( тест людини
).
Перевірка зі сценарію Bash
У наведених вище прикладах ми використовували синтаксис безпосередньо на терміналі. Оболонка щоразу, коли вона зустрічає цикл або умовний оператор (якщо
у нашому випадку), він продовжує запит і дозволяє користувачеві ввести блок продовження.
Той самий синтаксис можна використовувати всередині сценарію Bash.
The #!/bin/bash
на початку вказує інтерпретатор, який буде використовуватися під час виконання файлу. Хоча Bash є найбільш часто використовуваною оболонкою в наш час, деякі користувачі віддають перевагу оболонкам, як zsh
, який слід вказати замість bash на початку цього файлу.
Щоб надати дозволи на виконання для цього файлу запустіть:
chmod +x test.sh
нарешті, щоб виконати файл, запустити:
./test.sh