Привет, друзья. Сегодня грузить дебагом и гиковскими вещами не буду, разберём простую, но важную тему: как проверить, существует ли файл.
Сделать это можно несколькими способами:
filename="test.txt"
if [ -f $filename ];
then
echo "File exist"
fi
if test -f $filename;
then
echo "File exist"
fi
В первом примере ключ -f означает = True if file exists and is a regular file. Возвращаем True, если файл существует и является обычным файлом (не директорией и не симлинком и т. п.).
Во втором примере я использую команду test. Оба этих примера делают одно и то же, но в большинстве случаев обычно используется первый вариант.
Команда test предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными.
Ну а если подставить символ «!» в условие, то сработает обратная логика:
if [ ! -f $filename ];
if ! test -f $filename;
Здесь мы уже получим сообщение — указанный файл не найден. Для разных задач разные условия.
Да, часто возникают вопросы по ключу «-f», это не единственный ключ, их достаточно много, например можно проверить существование директории, сокета, установленные права и т. п. Табличку со всеми этими ключами я вынес отдельно сюда.
То же самое можно уместить в одну строчку, синтаксис будет таким:
[ ! -f "$filename" ] && echo "file not found" || echo "file exist"
Вещи с виду банальные, но важные, подобные конструкции очень часто используются в bash-скриптах. В этом посте я использую проверку существования файла для того, чтобы определить, подключён ли у меня сетевой диск. Опять же, всё зависит от задачи, которую ты хочешь решить.
Сегодня ещё увидимся после интеграции, а вот завтра устроим разгрузочный день, пятница как-никак. Ладно, давай пять, на связи!








Комментарии