Bash проверить наличие файла

Kaspersky

Часто при написании сценариев Bash может возникнуть ситуация, когда нужно выполнить действие в зависимости от того присутствует ли файл в системе или нет. Самый простой случай: выход из сценария, при отсутствии файла переданного в параметре командной строки.

Наиболее удобным, является комбинации команды test и if.

Проверка наличия файла

Любой из примеров проверить существование файла

FILE=/tmp/test.pid
if test -f "$FILE"; then
 echo "$FILE exists."
fi
FILE=/tmp/test.pid
if [ -f "$FILE" ]; then
 echo "$FILE exists."
fi
FILE=/tmp/test.pid
if [[ -f "$FILE" ]]; then
 echo "$FILE exists."
fi

Если необходимо выполнить действия в зависимости от того есть файл или нет, подойдет следующий сценарий:

FILE=/tmp/test.pid
if [ -f "$FILE" ]; then
 echo "$FILE exists."
else
 echo "$FILE does not exist."
fi

Так же возможно использование test без if

test -f /tmp/test.pid && echo "/tmp/test.pid exists."

Проверка отсутствия файла

выполнение действий только если файл отсутствует

FILE=/tmp/test.pid
if [ ! -f "$FILE" ]; then
 echo "$FILE does not exist."
fi
test -f /tmp/test.pid || echo "/tmp/test.pid does not exist."
Добавить комментарий