Страница 1 из 1

Проверка существования директории

Добавлено: 2013-03-25 15:02:50
Volodymyr
Нужно проверить наличие директории. Если директории нету, выйти из скрипта. Если есть - то продолжить.

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB"]
then
exit
fi
....
В результате пишет [: missing ] и продолжает роботу, директории нету. Что не так в конструкции?

Re: Проверка существования директории

Добавлено: 2013-03-25 15:51:45
ChihPih
Пробел вроде как нужен между закрывающей квадратной скобкой и последним символом слева.

Re: Проверка существования директории

Добавлено: 2013-03-25 18:38:46
rayder
да да, именно так :)

Re: Проверка существования директории

Добавлено: 2013-03-26 8:38:20
Volodymyr
Спасибо!

Re: Проверка существования директории

Добавлено: 2013-04-17 9:17:28
pimlab
а как сделать, если нет , то создать папку?

Re: Проверка существования директории

Добавлено: 2013-04-17 9:44:42
ChihPih
Условие что в первом посте + mkdir

Re: Проверка существования директории

Добавлено: 2013-04-17 10:08:52
pimlab
ChihPih писал(а):Условие что в первом посте + mkdir

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB" ]
then
mkdir -p  "/data/AAA/BBB"
fi
....
так чтоли ?

Re: Проверка существования директории

Добавлено: 2013-04-17 10:20:44
kpp
Да, так.
Что смущает?
Еще можно\нужно проверить код отработки утилиты mkdir.

Re: Проверка существования директории

Добавлено: 2013-04-17 10:34:18
pimlab
kpp писал(а):Да, так.
Что смущает?
Еще можно\нужно проверить код отработки утилиты mkdir.

Код: Выделить всё

#!/bin/sh

if [ ! -d "/data/AAA/BBB" ]
then
mkdir -p  "/data/AAA/BBB"
fi
if [ ! -d "/data/AAA/BBB" ]
then
exit
fi
так чтоли ?
смущает, то что я не понимаю, что делаю...
сейчас просто тупо скрипт создает каждый раз папку
решил переделать, а тут на тебе сразу , то что нужно :)

Re: Проверка существования директории

Добавлено: 2013-04-17 10:41:01
kpp
Вообще-то проверить выполнение любой утилиты:

Код: Выделить всё

if [ $? -eq 0 ]
then
  echo "OK"
else
  echo "ERROR"
fi

Re: Проверка существования директории

Добавлено: 2013-04-17 15:23:19
FreeBSP
иф сам по себе проверяет код выхода. оборачивать в тест не обязательно

Код: Выделить всё

#!/bin/sh

dir="/data/AAA/BBB"

if [ ! -d $dir ]; then
    echo "Dir $dir is not exist. Trying mkdir"
    if mkdir -p $dir; then
        echo "Dir $dir created"
    else
        echo "Dir $dir create FAILED"
    fi
else
    echo "Dir $dir is exist"
fi

Re: Проверка существования директории

Добавлено: 2013-04-17 17:16:52
pimlab
Спасибо !
в итоге скрипт такой

Код: Выделить всё

#! /bin/sh

dir="/tmp/snmp"
if [ ! -d $dir ]; then
    echo "Dir $dir is not exist. Trying mkdir"
    if mkdir -p $dir; then
	echo "Dir $dir created"
    else
	echo "Dir $dir create FAILED"
	    exit
	fi
else
    echo "Dir $dir is exist"
fi

# update smart parameters
for devfull in /dev/ad?; do
    dev=`basename $devfull`
    echo "$devfull"
    /usr/local/sbin/smartctl -n idle -a $devfull >$dir/smart-$dev.TMP
    mv $dir/smart-$dev.TMP $dir/smart-$dev
done

Re: Проверка существования директории

Добавлено: 2013-04-17 18:25:47
GhOsT_MZ
А разве так не будет работать? Выглядит значительно изящней.

Код: Выделить всё

[ ! -d $dir ] || mkdir -p $dir;

Re: Проверка существования директории

Добавлено: 2013-04-17 21:49:43
FreeBSP
на ифах нагляднее, учитывая
pimlab писал(а): смущает, то что я не понимаю, что делаю...