вторник, 9 февраля 2010 г.

Проверка существования файла в Unix shell

Есть вот такая команда Linux:
test -e filename - проверить, что файл filename существует ;
test -d filename- проверить, что файл filename существует и является директорией
(и куча других опций). На экран ничего не выводит, возвращает 1 или 0 если файл существует или не существует. Поэтому использовать лучше в скриптах. Например, если мы хотим удалить файл, надо сначала проверить его наличие, иначе rm выдаст ошибку, и скрипт дальше не будет исполняться.

Приведу кусочек makefile-a, где a)используется test : б) показан условный оператор shell:

if (test -f /usr/lib/libblas.a);\
then ($(FC) $(FFLAGS) -o driver driver.o splib.a -lblas);\
else ($(FC) $(FFLAGS) -o driver driver.o splib.a blas/localblas.a);\
fi

Здесь мы проверяем - есть ли в каталоге /usr/lib/ библиотека blas. Если да - линкуем с ней, иначе с blas-ом из директории ./blas.

2 комментария:

Alexander Pozdneev комментирует...

Кстати, чтобы rm не ругалась, можно использовать ключ -f

trinidados комментирует...

А я-то тут извращаюсь...))